Coding Test/백준
-
[백준 9372번] 상근이의 여행Coding Test/백준 2021. 2. 20. 21:49
# 문제 내 풀이 1 import sys input = sys.stdin.readline # 루트 노드를 찾는 연산을 정의 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] # 두 원소가 속한 집합을 합치는 연산 정의 def union_parent(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b t = int(input()) for _ in range(t): n, m = map(int, input().split()..
-
[백준 20040번] 사이클 게임Coding Test/백준 2021. 2. 18. 20:06
# 문제 내 풀이 import sys input = sys.stdin.readline # 특정 원소가 속한 집합을 찾기 (Find 연산) def find_parent(parent, x): # 루트 노드를 찾을 때까지 재귀 호출 if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] # 두 원소가 속한 집합을 합치기 (Union 연산) def union_parent(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b n, m = map(int, input().split())..
-
[백준 4195번] 친구 네트워크Coding Test/백준 2021. 2. 17. 21:31
# 문제 내 풀이 import sys input = sys.stdin.readline # 원소가 속한 집합의 루트 노드를 찾는 함수 정의 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] # 두 원소가 속한 집합을 합치는 함수 정의 def union_parent(parent, cnt, a , b): a = find_parent(parent, a) b = find_parent(parent, b) if a b: parent[a] = b cnt[b] +=..
-
[백준 1976번] 여행 가자Coding Test/백준 2021. 2. 16. 19:15
# 문제 내 풀이 import sys input = sys.stdin.readline # 주어진 정보 입력 받기 n = int(input()) m = int(input()) graph = [list(map(int, input().split())) for _ in range(n)] # 그래프 연결 상태 입력 받기 plan = list(map(int, input().split())) # 여행 계획 입력 받기 # 부모 테이블 생성 및 초기화 parent = [i for i in range(n + 1)] # 특정 원소가 속한 집합을 찾아주는 Find 연산 정의 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent..
-
[백준 1717번] 집합의 표현Coding Test/백준 2021. 2. 15. 16:34
# 문제 내 풀이 import sys input = sys.stdin.readline limit_number = 100000 sys.setrecursionlimit(limit_number) # 재귀 제한을 여유 있게 해제 # 특정 원소가 속한 집합을 찾기 (Find 연산) def find_parent(parent, x): # 루트 노드를 찾을 때까지 재귀적으로 호출 if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] # 두 원소가 속한 집합을 합치기 (Union 연산) def union_parent(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, ..
-
[백준 11657번] 타임머신Coding Test/백준 2021. 2. 14. 01:47
# 문제 모범 답안 - 벨만 포드 알고리즘 공부 import sys input = sys.stdin.readline INF = int(1e9) # 무한을 의미하는 값으로 10억 설정 def bf(start): # 시작 노드에 대해서 초기화 dist[start] = 0 # 전체 n번의 라운드(round)를 반복 for i in range(n): # 매 반복마다 "모든 간선"을 확인 for j in range(m): cur = edges[j][0] next_node = edges[j][1] cost = edges[j][2] # 현재 간선을 거쳐서 다른 노드로 이동하는 거리가 더 짧은 경우 if dist[cur] != INF and dist[next_node] > dist[cur] + cost: dist[ne..
-
[백준 2798번] 블랙잭Coding Test/백준 2021. 2. 14. 00:40
# 문제 내 풀이 n, m = map(int, input().split()) nums = list(map(int, input().split())) # 카드 숫자 입력 받기 result = 0 # M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합 # 전체 카드 숫자 중 3개를 뽑는 모든 경우의 수를 완전 탐색해 비교 for i in range(n - 2): for j in range(i + 1, n - 1): for k in range(j + 1, n): pick_sum = nums[i] + nums[j] + nums[k] if result < pick_sum and pick_sum
-
[백준 12865번] 평범한 배낭Coding Test/백준 2021. 2. 14. 00:36
# 문제 내 풀이 - 문제 풀이 실패, 수정 답안 n, k = map(int, input().split()) items = [(0, 0)] # 물품 정보 입력 받기 for i in range(n): w, v = map(int, input().split()) items.append((w, v)) # 2차원 DP 테이블 생성 및 초기화 dp = [[0] * (k + 1) for _ in range(n + 1)] # 냅색 알고리즘 수행 for i in range(1, n + 1): # 물품 중 하나를 선택 w = items[i][0] v = items[i][1] # 1 ~ k까지의 무게에 대해 다이나믹 프로그래밍 진행 for j in range(1, k + 1): # 선택한 물품의 무게가 가방 허용 무게를 넘..