코딩 테스트/Level 3
-
숫자 타자 대회코딩 테스트/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: ..
-
억억단을 외우자코딩 테스트/Level 3 2022. 11. 25. 01:15
https://school.programmers.co.kr/learn/courses/30/lessons/138475 def solution(e, starts): divisors = [0 for _ in range(e + 1)] for i in range(1, e + 1): for j in range(i, e + 1): if (temp := i * j) > e: break divisors[temp] += 1 if i == j else 2 checker = [0] * (e + 1) # [0 for _ in range(e + 1)] max_num = 0 for index in range(e, 0, -1): if divisors[index] >= max_num: max_num = divisors[index] c..
-
카운트 다운코딩 테스트/Level 3 2022. 11. 24. 01:32
https://school.programmers.co.kr/learn/courses/30/lessons/131129 def solution(target): import sys import heapq def dp(rest_score): if rest_score == 0: return 0, 0 if memo[rest_score]: return memo[rest_score] heap = [] for score in scores: if score == 50 and (next_score := rest_score - 50) >= 0: temp = dp(next_score) heapq.heappush(heap, (temp[0] + 1, temp[1] - 1)) continue if (next_score := rest..
-
2차원 동전 뒤집기코딩 테스트/Level 3 2022. 11. 23. 00:01
https://school.programmers.co.kr/learn/courses/30/lessons/131703 비트 마스크(bitmask)를 이용해서 모든 경우의 row를 만들면서, col를 하나씩 맞춰 보면 된다. 비트 마스크를 직접 구현하는 것보다는 itertools.product를 이용하는 것이 좀 더 파이써닉한 것 같아서... from itertools import product def flip_column(array, column): for row in array: if row[column]: row[column] = 0 else: row[column] = 1 def solution(source, target): answer = float('inf') row_length, col_lengt..
-
2022 KAKAO TECH INTERNSHIP 코딩 테스트 공부코딩 테스트/Level 3 2022. 11. 20. 23:31
https://school.programmers.co.kr/learn/courses/30/lessons/118668 https://tech.kakao.com/2022/07/13/2022-coding-test-summer-internship/ def solution(alp, cop, problems): max_alp = max_cop = 0 for each_alp, each_cop, *_ in problems: max_alp = max(each_alp, max_alp) max_cop = max(each_cop, max_cop) dp = [[float('inf') for _ in range(max_cop + 1)] for _ in range(max_alp + 1)] alp, cop = min(alp, max..
-
최적의 행렬 곱셈코딩 테스트/Level 3 2022. 11. 17. 01:35
https://school.programmers.co.kr/learn/courses/30/lessons/12942 def solution(matrix_sizes): table = [[0 for _ in matrix_sizes] for _ in matrix_sizes] for i in range(1, len(matrix_sizes)): for j in range(len(matrix_sizes) - i): k = j + i table[j][k] = min( table[j][m] + table[m + 1][k] + matrix_sizes[j][0] * matrix_sizes[m][1] * matrix_sizes[k][1] for m in range(j, k)) return table[0][-1]