코딩 테스트/Level 3
-
인사고과코딩 테스트/Level 3 2023. 1. 20. 15:15
https://school.programmers.co.kr/learn/courses/30/lessons/152995 def solution(scores): wh_sum = sum(scores[0]) max_s1 = answer = 0 for s in sorted(scores, key=lambda x: (-x[0], x[1])): if max_s1 wh_sum: answer += 1 elif s == scores[0]: return -1 return answer + 1 테스트 1 〉통과 (0.00ms, 10.2MB) 테스트 2 〉통과 (0.01ms, 10.2MB) 테스트 3 〉통과 (0.01ms, 10.2MB) 테스트 4 〉통과 (0.01ms, 10.1MB) 테스트 5 〉통과 (0.01ms, 10.1MB)..
-
2023 KAKAO BLIND RECRUITMENT - 표 병합코딩 테스트/Level 3 2023. 1. 8. 20:03
https://school.programmers.co.kr/learn/courses/30/lessons/150366 단순하게 리스트로 머지 상태를 관리했다. def solution(commands): def rc2index(r, c): return (int(r) - 1) * 50 + int(c) - 1 def update(p, s): old_state = states[p] for index in range(length): if states[index] == old_state: table[index] = s def replace(s1, s2): for index in range(length): if table[index] == s1: table[index] = s2 def merge(p1, p2): cha..
-
2023 KAKAO BLIND RECRUITMENT - 표현 가능한 이진트리코딩 테스트/Level 3 2023. 1. 8. 01:57
https://school.programmers.co.kr/learn/courses/30/lessons/150367 포화 이진 트리: 트리내 요소의 개수 = 2 ** n - 1 '0' 노드의 아래 노드는 모두 '0'이어야 한다. def solution(numbers): def is_tree(s, parent): if parent == '0' and not all(child == '0' for child in s): return False if len(s) == 1: return True return is_tree(s[:(center := len(s) // 2)], s[center]) and is_tree(s[center + 1:], s[center]) def to_bin(num): s = bin(num)..
-
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..
-
고고학 최고의 발견코딩 테스트/Level 3 2022. 12. 11. 22:03
https://school.programmers.co.kr/learn/courses/30/lessons/131702 고고학 최고의 발견 연습문제 Lv. 3 62명 4% 요약 첫 번째 줄이 결정되면, 두 번째 줄도 1가지 케이스로 결정된다. 첫 번째 줄의 모든 케이스를 전수조사(BF)한다. 꽤 힘들게 풀었다 ㅠ,.ㅠ 레벨 3 맞음? 첫 줄이 결정되면 다음 줄의 답도 결정된다. (상하좌우 방향은 관계 없다.) 첫 줄이 3, 0, 3, 0 으로 결정되어 있다면 다음 줄은 1, 0, 1, 0 회전하는 케이스만 존재한다. 그럼 첫 줄은 어떻게 결정할까? 첫 줄과 두 번째 줄은 서로 영향을 주기 때문에.. 복잡한 문제다. 첫 줄을 3, 3, 3, 0 에서 1번 턴을 해서 0, 0, 0, 0 으로 만들었더라도 두 번..
-
숫자 타자 대회코딩 테스트/Level 3 2022. 11. 30. 13:00
https://school.programmers.co.kr/learn/courses/30/lessons/136797 간단히 완전 탐색. 당연히 시간 제한. 문제는 제대로 이해한 것 같고.. def solution(numbers): def search(left, right, index, total): if len(numbers) == index: return total if left == right: return float('inf') number = int(numbers[index]) left_total = search(number, right, index + 1, total) + weights[left][number] right_total = search(left, number, index + 1, t..
-
등대코딩 테스트/Level 3 2022. 11. 27. 13:09
https://school.programmers.co.kr/learn/courses/30/lessons/133500 def solution(n, lighthouse): def make_tree(): tree = [[] for _ in range(n + 1)] for a, b in lighthouse: tree[a].append(b) tree[b].append(a) return tree def dfs(node, tree, visited): visited[node] = True children = [next_node for next_node in tree[node] if not visited[next_node]] on, off = 1, 0 if not children: return on, off else: ..