목록CodingTest/programmers (96)
기억은 짧고 기록은 길다

Link 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr Solution 해당 문제는 푸는데 제법 많은 고민을 했던것 같다. 1과 2를 제외하고 3부터 시작하니 은근 수월하게 해결되었다. 이런식으로 풀면 안되지만 누가봐도 이건 3으로 나누면서 푸는 문제라는 느낌을 받았다. 이에 3부터 3으로 나눈 몫과 나머지를 적어 내려가며 몫과 나머지 중 나머지에 초점을 맞춰야 한다는 것을 알게 되었다. 이에 3의 나머지는 0이고 124 나라의 숫자 중 4로 표현이 되기 때문에 0으로 4를 얻기 위해 nums를 ['4', '1', '2']로 두고 문제를 해결했다. 이렇게 해결하던 중 3의 배수일 때 즉 나머지가 0일 때에는 3을 제외하고 내가 작성한 풀이가 적용되지 않는 다는 것을 알게 되었다...

Link 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr Solution def solution(board, moves): answer = 0 box = [] for i in range(len(moves)): for j in range(len(board)): if board[j][moves[i] - 1] != 0: box.append(board[j][moves[i] - 1]) board[j][moves[i] - 1] = 0 if len(box) >= 2: if box[-1] == box[-2]: answer += 2 del box[-1..

Link 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr Solution def solution(dartResult): answer = [] sdt = {'S': 1, 'D': 2, 'T': 3} p = 0 for i in range(len(dartResult)): if dartResult[i] in sdt: answer.append(int(dartResult[p:i]) ** sdt[dartResult[i]]) p = i + 1 if dartResult[i] == '#': answer[len(answer) - 1] *= -1 p = i + 1 if dartResult[i] == '*': if len(answer) < 2: answer[0] *= 2 p = i + 1 else: an..

Link 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr Solution 정말 Other Solution의 풀이를 보고 감탄을 할 수 밖에 없었다. 시간복잡도도 시간복잡도지만 bin(i | j) 연산을 보고 매우 놀랐다. 해당 연산은 i와 j를 이진수로 바꾼 다음 or 연산을 사용한다. 이 문제를 통해 rjust(), zfill(), bin(i | j)를 익히고 가길 바란다. def solution(n, arr1, arr2): answer = [] arr1 = ['0' * (n - len(bin(i)[..

Link 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr Solution 해당 문제는 다양한 방법으로 풀 수 있지만 Other Solution의 첫번째 풀이인 좌표를 지정해서 푸는 방법이 가장 바람직한 풀이라고 생각한다. 필자의 풀이는 *, 0, #을 각각 10, 11, 12로 두었고 위아래 방향은 3, 좌우 방향은 1씩 값이 증가 혹은 감소 하므로 번호의 차를 3으로 나눈 몫과 나머지의 합이 두 번..

Link 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr Solution 해당 문제는 정규표현식을 알고 있다면 쉽게 해결할 수 있는 문제였다. 정규표현식에 대한 내용은 아래 링크로 첨부해둘테니 참고바란다. import re def solution(new_id): new_id = new_id.lower() new_id = re.sub('[^a-z\d\-\_\.]', '', new_id) new_id = re.sub('\.\.+', '.', new_id) new_id = re.sub('^\.|\.$', '..