코딩 테스트
-
2023 KAKAO BLIND RECRUITMENT - 미로 탈출 명령어코딩 테스트/Level 3 2023. 1. 6. 00:40
https://school.programmers.co.kr/learn/courses/30/lessons/150365 DFS. 스택으로 풀었다. 방향은 dlru 순으로 확인해야 한다. 스택은 마지막 입력한 것부터 pop 하기 때문에... 아래 코드와 같은 순서를.... 중간에 최소 거리가 남은 거리 보다 큰 경우, 홀짝이 안 맞는 경우는 가지치기를 했다. def solution(n, m, x, y, r, c, k): stack = [(x, y, [])] result = 'impossible' while stack: x_pos, y_pos, path = stack.pop() if len(path) == k and (x_pos, y_pos) == (r, c): result = ''.join(path) brea..
-
2023 KAKAO BLIND RECRUITMENT - 이모티콘 할인행사코딩 테스트/Level 2 2023. 1. 5. 22:35
https://school.programmers.co.kr/learn/courses/30/lessons/150368 def solution(users, emoticons): from itertools import product answer = [0, 0] for discounts in product((40, 30, 20, 10), repeat=len(emoticons)): sold = [0, 0] # 이모티콘, 판매액 for user_discount, user_money in users: sold_emoticons = 0 for emoticon, discount in zip(emoticons, discounts): if discount >= user_discount: sold_emoticons += em..
-
2023 KAKAO BLIND RECRUITMENT - 개인정보 수집 유효기간코딩 테스트/Level 1 2023. 1. 5. 21:11
https://school.programmers.co.kr/learn/courses/30/lessons/150370 파이썬 짧게 줄인다면.. def solution(today, terms, privacies): def sum_date(year, month, day, t_month): q, month = divmod(month + t_month, 12) if month = sum_date(*(int(each) for each in p_date.split('.')), terms[t_num])] 읽기 편하게 코드를 작성한다면... def solution(today, terms, privacies): def str2date(text): return [int(each) for each in text.split('..
-
유사 칸토어 문자열코딩 테스트/Level 2 2023. 1. 1. 12:00
https://school.programmers.co.kr/learn/courses/30/lessons/148652 이렇게는 제한 시간 내에 풀 수 없다 def solution(n, l, r): prev = [1] for _ in range(n): temp = [] for each in prev: if each == 1: temp.extend((1, 1, 0, 1, 1)) else: temp.extend((0, 0, 0, 0, 0)) prev = temp return sum(int(each) for each in prev[l - 1: r]) 재귀를 이용하여 풀 수 있다. def solution(n, l, r): def solve(num): if num 2: return (quotient - 1) * (4..
-
마법의 엘리베이터코딩 테스트/Level 2 2023. 1. 1. 11:33
https://school.programmers.co.kr/learn/courses/30/lessons/148653 def solution(storey): def solve(num, total): if num == 0: return total num_log = int(log10(num)) # 자리수 - 1 first = num // 10 ** num_log # 제일 앞 숫자 if first 5: return solve(10 ** (num_log + 1) - num, total + 1) else: if num_log == 0: return first + total num2 ..
-
행렬과 연산코딩 테스트/Level 4 2022. 12. 24. 21:45
https://school.programmers.co.kr/learn/courses/30/lessons/118670 level 2 수준으로 풀어봄.. 당연히 통과는 불가능. from copy import deepcopy def shift_row(a: list) -> list: return a[-1:] + a[:-1] def rotate(a: list) -> list: b = deepcopy(a) b[0] = a[1][:1] + a[0][:-1] b[-1] = a[-1][1:] + a[-2][-1:] for i in range(1, len(a) - 1): b[i][0] = a[i + 1][0] b[i][-1] = a[i - 1][-1] return b def solution(rc, operations): ..
-
테이블 해시 함수코딩 테스트/Level 2 2022. 12. 24. 13:04
https://school.programmers.co.kr/learn/courses/30/lessons/147354 from functools import reduce solution = lambda data, col, row_begin, row_end: reduce(lambda x, y: x ^ y, (sum(each % (i + 1) for each in sorted(data, key=lambda x: (x[col - 1], -x[0]))[i]) for i in range(row_begin - 1, row_end))) def solution(data, col, row_begin, row_end): data.sort(key=lambda x: (x[col - 1], -x[0])) answer = None..