최단경로
-
[백준 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..
-
[백준 1956번] 운동Coding Test/백준 2021. 1. 17. 23:27
# 문제 내 풀이 - Pypy에서 성공 import sys input = sys.stdin.readline INF = int(1e9) v, e = map(int, input().split()) graph = [[INF] * (v + 1) for _ in range(v + 1)] # 인접행렬 생성 # 간선 정보 입력 받기 for _ in range(e): a, b, c = map(int, input().split()) graph[a][b] = c # 플로이드 워셜 알고리즘 수행 for k in range(1, v + 1): for i in range(1, v + 1): for j in range(1, v + 1): graph[i][j] = min(graph[i][j], graph[i][k] + graph[..
-
[백준 1504번] 특정한 최단 경로Coding Test/백준 2021. 1. 14. 20:31
# 문제 내 풀이 import heapq import sys INF = int(1e9) input = sys.stdin.readline n, e = map(int, input().split()) graph = [[] for _ in range(n + 1)] distance_1 = [INF] * (n + 1) # 출발노드가 1인 최단 거리 테이블 생성 distance_v1 = [INF] * (n + 1) # 출발노드가 v1인 최단 거리 테이블 생성 distance_v2 = [INF] * (n + 1) # 출발노드가 v2인 최단 거리 테이블 생성 # 간선 정보 입력 받기 for _ in range(e): a, b, c = map(int, input().split()) graph[a].append((b, c)..
-
[백준 1753번] 최단경로Coding Test/백준 2021. 1. 14. 20:28
# 문제 내 풀이 import heapq import sys INF = 1e9 # 무한을 나타내는 값으로 10억 설정 input = sys.stdin.readline v, e = map(int, input().split()) k = int(input()) graph = [[] for _ in range(v + 1)] # 인접 리스트 생성 distance = [INF] * (v + 1) # 최단 거리 테이블을 생성하고 무한으로 초기화 # 간선 정보 입력 받기 for _ in range(e): u, v, w = map(int, input().split()) graph[u].append((v, w)) # 다익스트라 알고리즘 정의 def dijkstra(start): q = [] heapq.heappush(q,..
-
[백준 11404번] 플로이드Coding Test/백준 2021. 1. 12. 01:17
# 문제 내 풀이 # 내 풀이 import sys input = sys.stdin.readline INF = int(1e9) n = int(input()) m = int(input()) # 인접 행렬을 생성하고 무한으로 초기화 graph = [[INF] * (n + 1) for _ in range(n + 1)] # 자기 자신으로 가는 비용은 0으로 초기화 for i in range(1, n + 1): graph[i][i] = 0 # 각 간선 정보를 입력 받고 테이블을 초기화 for _ in range(m): a, b, c = map(int, input().split()) # 같은 도시를 향하는 동일한 간선이 존재하는 경우, 비용이 적은 간선을 선택 if graph[a][b] < c: continue gr..
-
[이코테 최단경로] 전보Coding Test/이것이 코딩 테스트다 2021. 1. 11. 23:45
# 문제 어떤 나라에는 N개의 도시가 있다. 그리고 각 도시는 보내고자 하는 메시지가 있는 경우, 다른 도시로 전보를 보내서 다른 도시로 해당 메시지를 전송할 수 있다하지만 X라는 도시에서 Y라는 도시로 전보를 보내고자 한다면, 도시 X에서 Y로 향하는 통로가 설치되어 있어야 한다. 예를 들어 X에서 Y로 향하는 통로는 있지만, Y에서 X로 향하는 통로가 없다면 Y는 X로 메시지를 보낼 수 없다. 또한 통로를 거쳐 메시지를 보낼 때는 일정 시간이 소요된다. 어느 날 C라는 도시에서 위급 상황이 발생했다. 그래서 최대한 많은 도시로 메시지를 보내고자 한다. 메시지는 도시 C에서 출발하여 각 도시 사이에 설치된 통로를 거쳐, 최대한 많이 퍼져나갈 것이다. 각 도시의 번호와 통로가 설치되어 있는 정보가 주어졌..
-
[이코테 최단경로] 미래 도시Coding Test/이것이 코딩 테스트다 2021. 1. 10. 05:34
# 문제 미래 도시에는 1번부터 N번까지의 회사가 있는데 특정 회사끼리는 서로 도로를 통해 연결되어 있다. 방문 판매원 A는 현재 1번 회사에 위치해 있으며, X번 회사에 방문해 물건을 판매하고자 한다미래 도시의 특정 회사에 도착하기 위한 방법은 회사끼리 연결되어 있는 도로를 이용하는 방법이 유일하다. 또한 연결된 2개의 회사는 양방향으로 이동할 수 있다. 공중 미래 도시에서 특정 회사와 다른 회사가 도로로 연결되어 있다면, 정확히 1만큼의 시간으로 이동할 수 있다. 또한 오늘 방문 판매원 A는 기대하던 소개팅에도 참석하고자 한다. 소개팅의 상대는 K번 회사에 존재한다. 방문 판매원 A씨는 X번 회사에 가서 물건을 판매하기 전에 먼저 소개팅 상대의 회사에 찾아가서 함께 커피를 마실 예정이다. 따라서 방문..
-
[알고리즘] 최단 경로 (Shortest Path) - 다익스트라 (Dijkstra Algorithm)Computer Science/자료구조 & 알고리즘 2020. 12. 19. 01:47
# 최단 경로 알고리즘 (Shortest Path Algorithm) 최단 경로 알고리즘(Shortest Path Algorithm)이란 가장 짧은 경로를 찾는 알고리즘을 말한다. 최단 경로를 찾는 것은 여러가지 상황이 존재할 수 있는데, 대표적으로 (1) 한 지점에서 다른 한 지점까지의 최단 경로를 찾는 상황 (2) 한 지점에서 다른 모든 지점까지의 최단 경로를 찾는 상황 (3) 모든 지점에서 다른 모든 지점까지의 최단 경로를 찾는 상황을 생각해 볼 수 있다. 최단 경로 알고리즘은 일반적으로 그래프 자료구조를 기반으로 해 진행된다. 각 지점은 노드(Node)로 나타내고, 지점 사이를 연결하는 도로는 간선(Edge)으로 표현한다. 예를 들어, 노드는 도시, 마을, 국가 등으로, 간선은 도로, 통로 등으로..