분류 전체보기

다익스트라 최단 경로 알고리즘 다익스트라 최단 경로 알고리즘은 그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이다. 다익스트라 알고리즘은 '음의 간선'이 없을 때 정상적으로 동작한다. 다익스트라 최단 경로 알고리즘은 기본적으로 그리디 알고리즘으로 분류된다. 매번 '가장 비용이 적은 노드'를 선택해서 임의의 과정을 반복하기 때문이다. 알고리즘의 원리는 아래와 같다. 출발 노드를 설정한다. 최단 거리 테이블을 초기화한다. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거..
효율적인 화폐 구성 n, m = map(int, input().split()) money_size = [] for i in range(n): money_size.append(int(input())) money_size.sort() array = [-1] * 1001 for money in money_size: array[money] = 1 for i in range(m+1): for j in money_size: if array[i] != -1 and array[i + j] == -1 and i + j
바닥 공사 n = int(input()) d = [0] * (n + 1) d[1] = 1 d[2] = 3 for i in range(3, n + 1): d[i] = d[n-1] + (d[n-2] * 2) print(d[n] % 796796) n = int(input()) d = [0] * 1001 d[1] = 1 d[2] = 3 for i in range(3, n + 1): d[i] = (d[n-1] + 2 * d[n-2]) % 796796 print(d[n]) 다이난믹 프로그래밍 문제에서는 종종 결과를 어떤 수로 나눈 결과를 출력하라는 내용이 들어가 있는 경우가 많다. 이는 단순히 결괏값이 굉장히 커질 수 있기 ..
개미 전사 n = int(input()) foods = list(map(int, input().split())) M = [0] * n M[0] = foods[0] M[1] = max(foods[0], foods[1]) for i in range(2, n): M[i] = max(M[i-2] + foods[i], M[i-1]) result = M[n]-1 print(result) n = int(input()) array = list(map(int, input().split())) d = [0] * 100 d[0] = array[0] d[1] = max(array[0], array[1]) for i in range(2,..
착쓰
'분류 전체보기' 카테고리의 글 목록 (9 Page)