다익스트라 4

[Python/프로그래머스]배달_다익스트라

https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221014 전형적인 다익스트라 문제 + 리스트 돌면서 k보다 작은 수 구해 return 하면 된다. 이 문제는 양방향이다!! 양방향인지 단방향인지 잘 보고 해야한다. 코드 : import heapq def dijkstra(distance,mp) : q = [] # dist는 0, node 시작 번호는 1 heapq.heappush(q,[0,1]) distance[1] = 0 while q..

[Python]다익스트라_최단경로알고리즘 (feat. heap)

다익스트라는 그리디와 DP의 유형으로 분류되는 최단경로 알고리즘이다. DP는 계속해서 그래프를 갱신하기 때문이고 그리디는 그 순간 가장 짧은 정점을 선택하기 때문이다. 음의 가중치가 적용될 수 없어 일상생활 문제에서 잘 사용될 수 있다. 특정한 한 노드에서 다른 모든 노드로 가는 최단 경로를 찾는 알고리즘이다. 원래는 O(V^2)의 시간복잡도를 가진다. ( 리스트 이용, 돌면서 가장 거리가 짧은 노드를 찾는 경우) 이것은 5,000개 까지는 괜찮지만 개수가 10,000개가 되면 시간초과가 될 가능성이 농후하다. (파이썬은 1초에 2천만 연산이라고 생각하면 됨) 시간초과를 막기 위해서 heap을 이용하면 된다. (방문하지 않은 최단거리의 정점을 찾을 때 이용) 파이썬의 minheap은 heappop을 하면..

[Python/BOJ] 백준 1753 최단경로(다익스트라)

https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 복습 : 🐾 20220922 🐾 20220924 🐾 20220926 🐾 20221014 📌 어디까지 혼자 생각했나? 앞서 풀어본 bfs 문제와 비슷할거라고 생각하고 이차원 리스트와 거리를 저장할 일차원 리스트를 생각했다. 그런데 구현부분에서 어떻게 해야 최솟값을 구할지 모르겠어서 정답을 찾아보았다. 💡 새롭게 알게된것 다익스트라 문제에는 heapq가 사용된다...

[C++/BOJ] 백준 1753 최단경로(다익스트라)

https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net 정답 코드: 더보기 #include #include #include using namespace std; int v, e, start; using PI = pair; #define INF 2e9; int visit[20001]; int dist[20001]; vector V; priority_queue q; int main() { cin >> v >> e >> start..