Algorithm 2

knapsack

dp 점화식 : knapsack[i][j]=max(knapsack[i−1][j],value+knapsack[i−1][j−weight]) 각 셀 knapsack[i][j]는 i개의 아이템과 jkg 용량을 가진 냅색에서의 최대 가치를 나타냄 j-weight: 여기서 weight는 현재 고려하고 있는 아이템 i의 무게. j-weight는 현재 아이템을 냅색에 추가했을 때 남는 냅색의 용량을 의미함 -> 이 문제의 포인트 N, K = map(int, input().split()) # 갯수, 무게 stuff = [[0, 0]] # 첫 번째 인덱스를 사용하지 않기 위해 [0,0]을 추가 knapsack = [[0 for _ in range(K+1)] for _ in range(N+1)] # dp 테이블 초기화 fo..

Algorithm 2024.04.20

union-find

집합의 연합(Union)과 요소의 대표자 찾기(Find) 연산을 효율적으로 수행할 수 있도록 도와주는 자료구조이다. 이 자료구조는 서로소 집합(Disjoint Set)을 다루는 데 특히 유용하며, 그래프 알고리즘에서 연결 성분을 판별하거나, 최소 신장 트리를 구하는 크루스칼(Kruskal) 알고리즘에 사용한다. Find: 어떤 요소가 속한 집합의 대표자(루트 노드)를 찾는 연산. 이 연산을 통해 두 요소가 같은 집합에 속하는지 판별. Union: 두 개의 집합을 하나의 집합으로 합치는 연산. 이는 두 집합의 대표자를 찾고, 한 대표자를 다른 대표자의 부모로 설정. # 여행가자, 여행경로 # 여행경로가 가능한지 판별 # 12 21 23 32 def union(x, y): x = find(x) y = fin..

Algorithm 2024.04.20