코딩 테스트/Level 3
-
억억단을 외우자코딩 테스트/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]
-
등산코스 정하기코딩 테스트/Level 3 2022. 11. 16. 17:55
https://school.programmers.co.kr/learn/courses/30/lessons/118669 다익스트라 알고리듬의 변형이다. from collections import defaultdict from heapq import heappop, heappush def solution(n, paths, gates, summits): summits_set = set(summits) graph = defaultdict(list) for i, j, w in paths: graph[i].append((j, w)) graph[j].append((i, w)) gates_queue = [(0, gate) for gate in gates] intensities = [float('inf') for _ in..
-
부대복귀코딩 테스트/Level 3 2022. 11. 16. 13:18
https://school.programmers.co.kr/learn/courses/30/lessons/132266 destination에서 출발해서 각각의 부대로 도착하는 거리를 측정하는 것이 더 쉽다. 최단 거리이므로 너비 우선 탐색을 응용하면 된다. from collections import defaultdict, deque def solution(n: int, roads: list, sources: list, destination: int): graph = defaultdict(set) for v1, v2 in roads: graph[v1].add(v2) graph[v2].add(v1) visited = {} queue = deque() # queue = deque([(destination, 0)..
-
2017 카카오코드 예선: 보행자 천국코딩 테스트/Level 3 2022. 9. 13. 18:16
https://school.programmers.co.kr/learn/courses/30/lessons/1832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 등굣길 문제의 업그레이드입니다. https://comdoc.tistory.com/entry/%EB%93%B1%EA%B5%A3%EA%B8%B8-%EB%8F%99%EC%A0%81%EA%B3%84%ED%9A%8D%EB%B2%95 (파이썬) 등굣길 - 동적계획법 https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 ..