Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 소개딩
- Django
- webhacking 처음
- Layered Architecture
- reversing.kr
- restapi
- 정보보호병 후기
- PyAmdecoder
- 인턴 지원
- mysql
- EER
- JSTL
- riceteacatpanda
- Forensic 절차
- frontend
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- 인턴 후기
- 방명록 만들기
- react
- spring
- 네이버 인턴
- 소프트웨어 개발보안 경진대회
- jsp
- 메모리 포랜식
- 행정지역 DB
- SessionAttribute
- Database
- 동읍면 DB
- DBMS
- 3단계 지역 DB
Archives
- Today
- Total
웹찢남
[백준 1916 최소비용 구하기 문제] PYTHON 본문
이번 문제는 최소비용 구하기 문제로 방향이 있는 edge들의 최소 비용을 구하면 된다.
우선은 평소와 같이 DFS를 사용하여 구현을 해보려했다.
아래와 같이 풀었지만 메모리 에러가 발생하여 구글링을 통해
다익스트라 알고리즘을 사용하기로 헀다.
def DFS(start, end, cost):
global answer
if start == end:
if cost < answer:
answer = cost
for i in range(1, M+1):
if Mgraph[start][i] != 0:
cost += Mgraph[start][i]
if answer <= cost:
pass
DFS(i, end, cost)
cost -= Mgraph[start][i]
answer = 100000000
N = int(input())
M = int(input())
Mgraph = [[0 for _ in range(M+1)] for _ in range(M+1)]
for _ in range(M):
a, b, c = map(int, input().split())
Mgraph[a][b] = c
start, end = map(int, input().split())
DFS(start, end, 0)
print(answer)
다익스트라 알고리즘은 하나의 정점에서 다른 모든 정점으로 가는 최단 경로를 구할 수 있다.
또한 각각의 최단 경로를 구하기 위해 전에 구했던 다른 정점까지의 최단 경로를 사용한다.
import sys
from heapq import heappush, heappop
def dijkstra(start):
heap = []
heappush(heap, (0, start))
distance[start] = 0
while heap:
cost, index = heappop(heap)
if distance[index] < cost:
continue
for a, b in Mgraph[index]:
if cost+b < distance[a]:
distance[a] = cost+b
heappush(heap, (cost+b, a))
input = sys.stdin.readline
N = int(input())
M = int(input())
Mgraph = [[] for _ in range(N+1)]
distance = [sys.maxsize]*(N+1)
for _ in range(M):
a, b, c = map(int, input().split())
Mgraph[a].append([b, c])
start, end = map(int, input().split())
dijkstra(start)
print(distance[end])
'백준 Algorithm' 카테고리의 다른 글
[백준 10942 펠린드롬? 문제] PYTHON (0) | 2021.08.24 |
---|---|
[백준 1915 가장 큰 정사각형 문제] PYTHON (0) | 2021.08.23 |
[백준 2252 줄 세우기 문제] PYTHON (0) | 2021.08.18 |
[백준 2056 작업 문제] PYTHON (0) | 2021.08.17 |
[백준 2293 동전 1, 9084 동전 문제] PYTHON (0) | 2021.08.17 |
Comments