본문 바로가기
  • KEEP HUSTLE!

Python59

[백준 10217] KCM Travel - Python(파이썬) 다익스트라와 냅색을 활용한 코드 from heapq import heappop, heappush import sys def solution(): check = [[float('inf')] * (M+1) for _ in range(N+1)] temp = [(0, 0, 1)] while temp: # d: 거리, c: 비용, idx: 해당 인덱스 d, c, idx = heappop(temp) if check[idx][c] < d: continue # 원하는 인덱스면, 해당 거리 리턴! if idx == N: return d # k: 해당 인덱스, l: 비용, m: 거리 for k, l, m in dist[idx]: l += c m += d # 합 비용이 예산 초과거나 합 거리가 check의 거리 이상일 경우.. 2021. 3. 27.
[백준 11404] 플로이드 - Python(파이썬) import sys n = int(sys.stdin.readline().strip()) m = int(sys.stdin.readline().strip()) arr = [[float('inf')] * n for _ in range(n)] for _ in range(m): a, b, c = map(int, sys.stdin.readline().split()) arr[a-1][b-1] = min(arr[a-1][b-1], c) # 모든 하나하나 돌면서 해당 노드를 거쳤을 때를 비교 for k in range(n): arr[k][k] = 0 for i in range(n): for j in range(n): arr[i][j] = min(arr[i][j], arr[i][k] + arr[k][j]) for t in.. 2021. 3. 27.
[백준 11401] 이항계수 3 - Python(파이썬) 이 문제는 이항계수를 찾는 공식을 사용해야만 한다. import sys def solution(x, y): if y == 1: return x % key elif y % 2: return solution(x ** 2 % key, y // 2) * x % key else: return solution(x ** 2 % key, y // 2) N, K = map(int, sys.stdin.readline().split()) K = min(K, N-K) key = 1000000007 answer = 1 temp = 1 for i in range(K): answer *= N-i answer %= key temp *= K-i temp %= key print(solution(temp, key-2) * answer %.. 2021. 3. 27.
[백준 17472] 다리 만들기 2 - Python(파이썬) import sys # 섬 크기 탐색 함수, 그 섬의 인덱스와 해당 좌표를 같이 저장 def search_land(x, y, cnt): for k in range(4): n_x, n_y = x + dx[k], y + dy[k] if 0 2021. 3. 21.
[백준 2887] 행성 터널 - Python(파이썬) 우선순위 큐인 heap 사용! from heapq import heappop, heappush import sys def find(x): if home[x] < 0: return x home[x] = find(home[x]) return home[x] def union(a, b): a, b = find(a), find(b) # 빠른 탐색을 위해, 최솟값에 저장 if a != b: if home[a] < home[b]: home[a] += home[b] home[b] = a else: home[b] += home[a] home[a] = b N = int(sys.stdin.readline().strip()) arr = [list(map(int, sys.stdin.readline().split())) + [i.. 2021. 3. 21.
[백준 1774] 우주신과의 교감 - Python(파이썬) 우선순위 큐인 heap 사용! from heapq import heappop, heappush import sys def find(x): if home[x] < 0: return x home[x] = find(home[x]) return home[x] def union(a, b): a, b = find(a), find(b) home[b] = a N, M = map(int, sys.stdin.readline().split()) home = [-1] * (N + 1) arr = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] my_heap = [] answer, cnt = 0, 0 for i in range(N): for j in range.. 2021. 3. 21.