본문 바로가기

이취코9

[이취코] 미래도시 (Python3) Problem: 최단 경로 알고리즘 - 플로이드워셜 (FLoyd-Warshall) 플로이드 워셜을 적용한 코드 INF = int(1e9) n, m = map(int, input().split()) graph = [[INF] * (n+1) for i in range(n+1)] # 자기 자신인 경우, 0으로 초기화 for a in range(1, n+1): for b in range(1, n+1): if a == b: graph[a][b] = 0 # 간선에 대한 정보, 거리는 다 1로 초기화 for _ in range(m): a, b = map(int, input().split()) graph[a][b] = 1 graph[b][a] = 1 x, k = map(int, input().split()) # 플로이.. 2024. 3. 6.
[이취코] 전보 (Python3) Problem: 최단 경로 알고리즘 - 다익스트라 (Dijkstra) 다익스트라를 적용한 코드 ''' ⭐️⭐️⭐️⭐️⭐️ ''' import heapq import sys input = sys.stdin.readline INF = int(1e9) # 무한, 10억 n, m, start = map(int, input().split()) graph = [[] for i in range(n + 1)] distance = [INF] * (n + 1) for _ in range(m): x, y, z = map(int, input().split()) # X에서 Y로 가는 거리 비용이 Z graph[x].append((y,z)) def dijkstra(start): q = [] # 시작노드로 가기 위한 최단 거리 0.. 2024. 3. 6.
[이취코] 병사 배치하기 (Python3) Problem: 다이나믹 프로그래밍 (Dynamic Programming) DP를 적용한 코드 n = int(input()) arr = list(map(int, input().split())) arr.reverse() d = [1] * n for i in range(1, n): for j in range(0, i): if arr[j] < arr[i]: d[i] = max(d[i], d[j] + 1) # print(d) print(n - max(d)) ''' 7 15 11 4 8 5 2 4 reverse() 4 2 5 8 4 11 15 ''' 2024. 3. 6.
[이취코] 금광 (Python3) DP를 적용한 코드 for tc in range(int(input())): n, m = map(int, input().split()) array = list(map(int, input().split())) dp = [] index = 0 for i in range(n): dp.append(array[index:index + m]) index += m # print(dp) for j in range(1, m): for i in range(n): if i == 0: left_up = 0 else: left_up = dp[i-1][j-1] if i == n-1: left_down = 0 else: left_down = dp[i+1][j-1] left = dp[i][j-1] dp[i][j] = dp[i][j] .. 2024. 3. 6.
[이취코] 효율적인 화폐 구성 (Python3) 처음에 짠 코드 n, m = map(int, input().split()) costs = [int(input()) for _ in range(n)] count = -1 d = [0] * 10000 for cost in costs: if m % cost == 0: count = m // cost else: count = -1 print(count) DP를 적용한 코드 n, m = map(int, input().split()) cost = [int(input()) for _ in range(n)] d = [10001] * (m+1) d[0] = 0 for i in range(n): # 3 for j in range(cost[i], m+1): # cost ~ 7 if d[j - cost[i]] != 10001.. 2024. 3. 6.
[이취코] 1로 만들기 (Python3) 처음에 짠 코드 n = int(input()) count = 0 if n == 1: count = 0 if n == 2: count = 1 if n == 3: count = 1 if n == 5: count = 1 else: while n != 1: if n % 5 == 0: n /= 5 count += 1 elif n % 3 == 0: n /= 3 count += 1 elif n % 2 == 0: n /= 2 count += 1 else: n -= 1 count += 1 print(count) DP 를 적용한 코드 n = int(input()) d = [0] * 30001 for i in range(2, n + 1): d[i] = d[i - 1] + 1 if i % 2 == 0: d[i] = min(d.. 2024. 3. 6.