Coding Test
-
[백준 1149번] RGB거리Coding Test/백준 2021. 1. 22. 19:38
# 문제 내 풀이 - 문제 풀이 실패, 수정 답안 n = int(input()) rgb = [[]] # 비용이 인덱스 1번부터 시작되도록 인덱스 0에 빈 리스트 추가 for _ in range(n): rgb.append(list(map(int, input().split()))) # 각각의 색에 대하여 dp 테이블 생성 및 초기화 dp_r = [0] * 1001 dp_g = [0] * 1001 dp_b = [0] * 1001 dp_r[1] = rgb[1][0] dp_g[1] = rgb[1][1] dp_b[1] = rgb[1][2] # 바텀업 다이나믹 프로그래밍 수행 for i in range(2, n + 1): dp_r[i] = min(dp_g[i - 1], dp_b[i - 1]) + rgb[i][0] d..
-
[백준 9461번] 파도반 수열Coding Test/백준 2021. 1. 20. 15:42
# 문제 내 풀이 t = int(input()) # dp 테이블 생성 및 초기화 dp = [0] * 101 dp[1] = 1 dp[2] = 1 dp[3] = 1 dp[4] = 2 dp[5] = 2 # 바텀업 다이나믹 프로그래밍 수행 for i in range(6, 101): dp[i] = dp[i - 1] + dp[i - 5] # 각 테스트 케이스 별 결과 출력 for _ in range(t): n = int(input()) print(dp[n])
-
[백준 1904번] 01타일Coding Test/백준 2021. 1. 19. 02:33
# 문제 내 풀이 - 문제 풀이 실패, 수정 답안 n = int(input()) # dp 테이블 생성 및 초기화 dp = [0] * 1000001 dp[1] = 1 dp[2] = 2 # 바텀업 다아나믹 프로그래밍 수행 for i in range(3, n + 1): dp[i] = (dp[i - 1] + dp[i - 2]) % 15746 # 숫자 표현 범위를 벗어나지 않기 위해 나머지 연산을 항상 적용 print(dp[n]) 문제 접근 끝이 00일 경우와 1일 경우로 나누어 생각하면 결과적으로 피보나치 수열이 나온다. 생각할 점 정답률이 아주 낮진 않아서 쉬운 문제라 생각했는데, 아이디어도 잘 생각나지 않고 런타임에러에 메모리 초과까지 신경쓸 부분이 많았다. 15746으로 나누는 것도 계산할 때마다 적용해서..
-
[백준 1956번] 운동Coding Test/백준 2021. 1. 17. 23:27
# 문제 내 풀이 - Pypy에서 성공 import sys input = sys.stdin.readline INF = int(1e9) v, e = map(int, input().split()) graph = [[INF] * (v + 1) for _ in range(v + 1)] # 인접행렬 생성 # 간선 정보 입력 받기 for _ in range(e): a, b, c = map(int, input().split()) graph[a][b] = c # 플로이드 워셜 알고리즘 수행 for k in range(1, v + 1): for i in range(1, v + 1): for j in range(1, v + 1): graph[i][j] = min(graph[i][j], graph[i][k] + graph[..
-
[백준 9370번] 미확인 도착지Coding Test/백준 2021. 1. 16. 13:55
# 문제 내 풀이 import heapq import sys input = sys.stdin.readline INF = int(1e9) def dijkstra(start): distance = [INF] * (n + 1) # 최단 거리 테이블 생성 q = [] heapq.heappush(q, (0, start)) distance[start] = 0 while q: dist, now = heapq.heappop(q) # 이미 처리한 노드인 경우 무시 if distance[now] < dist: continue # 인접한 노드 확인 for i in graph[now]: cost = dist + i[1] # 현재 노드를 경유하는 것이 최단 거리인 경우, 인접한 노드 정보를 힙에 삽입하고 최단 거리 갱신 if ..
-
[백준 1504번] 특정한 최단 경로Coding Test/백준 2021. 1. 14. 20:31
# 문제 내 풀이 import heapq import sys INF = int(1e9) input = sys.stdin.readline n, e = map(int, input().split()) graph = [[] for _ in range(n + 1)] distance_1 = [INF] * (n + 1) # 출발노드가 1인 최단 거리 테이블 생성 distance_v1 = [INF] * (n + 1) # 출발노드가 v1인 최단 거리 테이블 생성 distance_v2 = [INF] * (n + 1) # 출발노드가 v2인 최단 거리 테이블 생성 # 간선 정보 입력 받기 for _ in range(e): a, b, c = map(int, input().split()) graph[a].append((b, c)..
-
[백준 1753번] 최단경로Coding Test/백준 2021. 1. 14. 20:28
# 문제 내 풀이 import heapq import sys INF = 1e9 # 무한을 나타내는 값으로 10억 설정 input = sys.stdin.readline v, e = map(int, input().split()) k = int(input()) graph = [[] for _ in range(v + 1)] # 인접 리스트 생성 distance = [INF] * (v + 1) # 최단 거리 테이블을 생성하고 무한으로 초기화 # 간선 정보 입력 받기 for _ in range(e): u, v, w = map(int, input().split()) graph[u].append((v, w)) # 다익스트라 알고리즘 정의 def dijkstra(start): q = [] heapq.heappush(q,..
-
[백준 11404번] 플로이드Coding Test/백준 2021. 1. 12. 01:17
# 문제 내 풀이 # 내 풀이 import sys input = sys.stdin.readline INF = int(1e9) n = int(input()) m = int(input()) # 인접 행렬을 생성하고 무한으로 초기화 graph = [[INF] * (n + 1) for _ in range(n + 1)] # 자기 자신으로 가는 비용은 0으로 초기화 for i in range(1, n + 1): graph[i][i] = 0 # 각 간선 정보를 입력 받고 테이블을 초기화 for _ in range(m): a, b, c = map(int, input().split()) # 같은 도시를 향하는 동일한 간선이 존재하는 경우, 비용이 적은 간선을 선택 if graph[a][b] < c: continue gr..