본문 바로가기

반응형

개발/Algorithm

(98)
[리트코드] Valid Palindrome(python) 리트코드, Valid Palindrome_적절한 팰린드롬 TL;DR 팰린드롬 : 원본과 원본을 뒤집었을 때가 동일한 경우. 예)"아 많다 많다 많다 많아" 문자열 슬라이싱을 활용 할 수 있는가 문제 분석 1. 주어진 문자열 s에 대해서 해당 문자열이 팰린드롬인지 아닌지를 판별하라. 2. 문자열은 알파벳 또는 숫자로만 이루어져 있다고 가정한다. - 1 : 해결해야 하는 문제에 대해서 말하고 있다. - 2 : 문제의 조건에 대해서 소개하고 있다. 주어지는 문자열 s에서 영어 대-소문자와 숫자를 제외한 문자들은 모두 무시해도 된다. 입출력 형태 - 주어진 입력 s가 팰린드롬이라면 True를 아니라면 False를 반환해야 한다. - 예시 1번에서 주어진 문자열 s에서 알파벳과 숫자로 이루어진 문자는 뒤집어도 동..
[프로그래머스] 로또의 최고 순위와 최저 순위(python) 2021년 5월 27일 Algorithm, 프로그래머스, 로또의 최고 순위와 최저 순위 2021년 Dev-Matching: 웹 백엔드 개발자(상반기) TL;DR 주어진 문제의 조건을 구현할 수 있는지 문제 분석 1. 순서와 상관없이, 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌 걸로 인정됩니다. 2. 알아볼 수 없는 번호가 당첨 번호라면, 해당 맞춘 개수의 순위에 당첨됩니다. 3. 알아볼 수 없는 번호가 당첨 번호가 아니라면, 해당 맞춘 개수의 순위에 당첨됩니다. - 2 ~ 3 : 알아볼 수 없는 번호인 0을 당첨번호라고 생각했을 때가 당첨 가능한 최고 순위, 그렇지 않을 경우가 당첨 가능한 최저 순위이다. - 즉, 당첨 가능한 최고 순위는 0이 아닌 숫자 중 당첨번호인 숫자의 개수 + 0의 ..
[프로그래머스] 신규 아이디 추천(python) 2021년 5월 26일 Algorithm, 프로그래머스, 신규 아이디 추천 2021년 카카오 블라인드 채용 TL;DR 주어진 문제의 조건을 구현할 수 있는지 정규 표현식(정규식)을 활용할 수 있는지 문제 분석 1. new_id의 모든 대문자를 대응되는 소문자로 치환한다. 2. new_id에서 알파벳 소문자, 숫자 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거한다. 3. new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환한다. 4. new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거한다. 5. new_id가 빈 문자열이라면, new_id에 "a"를 대입한다. 6. new_id의 길이가 16자 이상이라면, new_id의 첫 15개 문자를 제외한 나머지..
[프로그래머스] 키패드 누르기(python) 2021년 5월 24일 Algorithm, 프로그래머스, 키패드 누르기 2020년 카카오 인턴십 TL;DR 주어진 문제의 조건을 구현할 수 있는지 문제 분석 1. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 2. 왼쪽 열의 3개 숫자(1, 4, 7)를 입력할 때는 왼손을 사용합니다. 3. 오른쪽 열의 3개의 숫자(3, 6, 9)를 입력할 때는 오른손을 사용합니다. 4. 가운데 열의 4개의 숫자(2, 5, 8, 0)을 입력할 때는 두 엄지손가락의 현재 키패드 위치에서 더 가까운 엄지손가락을 사용합니다. 4-1. 만약 두 엄지손가락의 거리가 같다면, 오른손잡이는 오른손 엄지손가락, 왼손잡이는 왼손 엄지손가락을 사용합니다. - 1 : 엄지 손가락 간의..
[프로그래머스] 실패율(python) 2021년 5월 21일 Algorithm, 프로그래머스, 실패율 2019년 카카오 블라인드 채용 출제 TL;DR 주어진 문제의 조건을 구현할 수 있는지 정렬을 활용할 수 있는지 문제 분석 1. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 제한사항 2. 스테이지의 개수 N은 1 이상 500 이하의 자연수이다. 3. stages의 길이는 1 이상 200,000 이하이다. 4. stages에는 1 이상 N + 1 이하의 자연수가 담겨있다. 각 자연수는 사용자가 현재 도전 중인 스테이지의 번호를 나타낸다. 단, N + 1 은 마지막 스테이지(N 번째 스테이지) 까지 클리어 한 사용자를 나타낸다. 5. 만약 실패율이 같은 스테이지가 있..
[프로그래머스] 크레인 인형뽑기 게임(python) 2021년 5월 20일 Algorithm, 프로그래머스, 크레인 인형뽑기 게임 2019년 카카오 개발자 겨울 인턴십 출제 문제 TL;DR 스택(Stack)을 활용하여 주어진 문제를 구현할 수 있는지 문제 분석 1. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 2. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래..
[프로그래머스] 비밀지도(python) 2021년 월 일 Algorithm, 프로그래머스, 비밀지도 2018년 카카오 블라인드 채용 1차 문제 TL;DR 비트 연산자를 활용할 수 있는지 문제 분석 1. 지도는 한 변의 길이가 `n`인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 2. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도1"과 "지도2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 3. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 4. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 `1`, 공백 부분을 `0`으로 부호화했을 때 얻어..
[프로그래머스] 다트 게임(python) 2021년 5월 17일 Algorithm, 프로그래머스, 다트 게임 2018년 카카오 블라인드 채용 1차 문제 TL;DR 주어진 문자열을 조건에 따라 토큰화(문자열 처리)할 수 있는지 문제에 주어진 조건을 구현할 수 있는지 정규식을 활용할 수 있는지 * 문제 분석 1. 다트 게임은 총 3번의 기회로 구성된다. 2. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 3. 점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에게 1제곱, 2제곱, 3제곱으로 계산된다. 4. 옵션으로 스타상(*), 아차상(#)이 존재하며 스타상 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 아차상 당첨 시 해당 점수는 마이너스된다. 5. 스타상은..