deo2kim
λ§žμ™œν‹€
deo2kim
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

λ°˜μ‘ν˜•
hELLO Β· Designed By μ •μƒμš°.
deo2kim

λ§žμ™œν‹€

[python] λ°±μ€€ - 1916. μ΅œμ†ŒλΉ„μš© κ΅¬ν•˜κΈ°
Algorithm Problem/Python

[python] λ°±μ€€ - 1916. μ΅œμ†ŒλΉ„μš© κ΅¬ν•˜κΈ°

2020. 9. 23. 08:05
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • G5 | λ‹€μ΅μŠ€νŠΈλΌ, κ·Έλž˜ν”„

ν•˜λ‚˜μ˜ μ •μ μ—μ„œ λ‹€λ₯Έ λͺ¨λ“  μ •μ λ“€μ˜ μ΅œλ‹¨ κ²½λ‘œλ₯Ό κ΅¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜

κ°„μ„ , μ΅œμ†Œ λ“±λ“± 말이 λ‚˜μ˜€λ©΄ λ‹€μ΅μŠ€νŠΈλΌ?

 

λ‚˜μ˜ 경우 λ‹€μ΅μŠ€νŠΈλΌλ₯Ό ν’€ λ•Œ 항상 μš°μ„ μˆœμœ„ 큐λ₯Ό μ΄μš©ν•œλ‹€. (파이썬의 νž™νλ₯Ό μ‚¬μš©)

A μ—μ„œ 갈 수 μžˆλŠ” λͺ¨λ“  μ •μ λ“€μ˜ μ΅œμ†ŒλΉ„μš©μ„ λ¦¬μŠ€νŠΈμ— 담아두고

B 지점을 λ‹΅μœΌλ‘œ 좜λ ₯ν•œλ‹€.

 

  • λ¨Όμ € (κ°€μ€‘μΉ˜, μ‹œμž‘μ )을 νž™νμ— λ„£κ³  μ‹œμž‘ν•œλ‹€.
  • μ‹œμž‘μ μ—μ„œ 각 μ •μ κΉŒμ§€μ˜ λΉ„μš©μ€ κ°€μž₯ 큰 κ°’(νŒŒμ΄μ¬μ—μ„œ float('inf')λ₯Ό 넣어두고 μ‹œμž‘ν•œλ‹€.)
  • νž™νμ—μ„œ 값을 ν•˜λ‚˜μ”© κΊΌλ‚Έλ‹€. 
  • κΊΌλ‚Έ μ •μ μ—μ„œ μ΄μ›ƒν•œ 정점듀 μ€‘μ—μ„œ 아직 λ°©λ¬Έν•˜μ§€ μ•Šμ•˜κ³ , μ΄μ›ƒν•œ μ •μ κΉŒμ§€μ˜ λΉ„μš©λ³΄λ‹€ ν˜„μž¬λΉ„μš© + κΊΌλ‚Έ μ •μ μ—μ„œ μ΄μ›ƒν•œ μ •μ κΉŒμ§€μ˜ κ°„μ„ λΉ„μš©μ΄ μž‘μœΌλ©΄ 각 μ •μ κΉŒμ§€μ˜ λΉ„μš©μ„ ν˜„μž¬λΉ„μš© + κΊΌλ‚Έ μ •μ μ—μ„œ μ΄μ›ƒν•œ μ •μ κΉŒμ§€μ˜ κ°„μ„ λΉ„μš©μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜κ³ , νž™νμ— λ„£μ–΄μ€€λ‹€.
  • μœ„μ˜ 과정을 λ°˜λ³΅ν•˜λ©΄ λ¦¬μŠ€νŠΈμ— μ‹œμž‘μ μ—μ„œ λͺ¨λ“ μ •μ κΉŒμ§€μ˜ μ΅œμ†ŒλΉ„μš©μ΄ λ“€μ–΄μžˆμ„ 것이닀.

πŸ’¨

πŸ’»μ†ŒμŠ€ μ½”λ“œ

import sys
import heapq as h

input = sys.stdin.readline


def dijkstra(S, E):
    pq = []
    h.heappush(pq, (0, S))
    visited = [0] * (N + 1)
    key = [float('inf')] * (N + 1)
    key[S] = 0
    while pq:
        k, u = h.heappop(pq)

        if visited[u]:
            continue

        visited[u] = 1
        for nei_u, nei_k in adj[u]:
            if not visited[nei_u] and k + nei_k < key[nei_u]:
                key[nei_u] = k + nei_k
                h.heappush(pq, (key[nei_u], nei_u))
    print(key[E])


if __name__ == '__main__':
    N = int(input())  # λ„μ‹œμ˜ 개수
    M = int(input())  # λ²„μŠ€μ˜ 개수

    adj = {x + 1: [] for x in range(N)}
    for bus in range(M):
        s, e, k = map(int, input().split())
        adj[s].append((e, k))

    A, B = map(int, input().split())

    dijkstra(A, B)

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

링크: https://www.acmicpc.net/problem/1916

 

1916번: μ΅œμ†ŒλΉ„μš© κ΅¬ν•˜κΈ°

첫째 쀄에 λ„μ‹œμ˜ 개수 N(1 ≤ N ≤ 1,000)이 μ£Όμ–΄μ§€κ³  λ‘˜μ§Έ μ€„μ—λŠ” λ²„μŠ€μ˜ 개수 M(1 ≤ M ≤ 100,000)이 μ£Όμ–΄μ§„λ‹€. 그리고 μ…‹μ§Έ 쀄뢀터 M+2μ€„κΉŒμ§€ λ‹€μŒκ³Ό 같은 λ²„μŠ€μ˜ 정보가 μ£Όμ–΄μ§„λ‹€. λ¨Όμ € μ²˜μŒμ—λŠ” κ·Έ

www.acmicpc.net


문제

N개의 λ„μ‹œκ°€ μžˆλ‹€. 그리고 ν•œ λ„μ‹œμ—μ„œ μΆœλ°œν•˜μ—¬ λ‹€λ₯Έ λ„μ‹œμ— λ„μ°©ν•˜λŠ” M개의 λ²„μŠ€κ°€ μžˆλ‹€. μš°λ¦¬λŠ” A번째 λ„μ‹œμ—μ„œ B번째 λ„μ‹œκΉŒμ§€ κ°€λŠ”λ° λ“œλŠ” λ²„μŠ€ λΉ„μš©μ„ μ΅œμ†Œν™” μ‹œν‚€λ €κ³  ν•œλ‹€. A번째 λ„μ‹œμ—μ„œ B번째 λ„μ‹œκΉŒμ§€ κ°€λŠ”λ° λ“œλŠ” μ΅œμ†ŒλΉ„μš©μ„ 좜λ ₯ν•˜μ—¬λΌ. λ„μ‹œμ˜ λ²ˆν˜ΈλŠ” 1λΆ€ν„° NκΉŒμ§€μ΄λ‹€.

μž…λ ₯

첫째 쀄에 λ„μ‹œμ˜ 개수 N(1 ≤ N ≤ 1,000)이 μ£Όμ–΄μ§€κ³  λ‘˜μ§Έ μ€„μ—λŠ” λ²„μŠ€μ˜ 개수 M(1 ≤ M ≤ 100,000)이 μ£Όμ–΄μ§„λ‹€. 그리고 μ…‹μ§Έ 쀄뢀터 M+2μ€„κΉŒμ§€ λ‹€μŒκ³Ό 같은 λ²„μŠ€μ˜ 정보가 μ£Όμ–΄μ§„λ‹€. λ¨Όμ € μ²˜μŒμ—λŠ” κ·Έ λ²„μŠ€μ˜ 좜발 λ„μ‹œμ˜ λ²ˆν˜Έκ°€ μ£Όμ–΄μ§„λ‹€. 그리고 κ·Έ λ‹€μŒμ—λŠ” λ„μ°©μ§€μ˜ λ„μ‹œ λ²ˆν˜Έκ°€ μ£Όμ–΄μ§€κ³  또 κ·Έ λ²„μŠ€ λΉ„μš©μ΄ μ£Όμ–΄μ§„λ‹€. λ²„μŠ€ λΉ„μš©μ€ 0보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100,000보닀 μž‘μ€ μ •μˆ˜μ΄λ‹€.

그리고 M+3μ§Έ μ€„μ—λŠ” μš°λ¦¬κ°€ κ΅¬ν•˜κ³ μž ν•˜λŠ” ꡬ간 좜발점의 λ„μ‹œλ²ˆν˜Έμ™€ λ„μ°©μ μ˜ λ„μ‹œλ²ˆν˜Έκ°€ μ£Όμ–΄μ§„λ‹€. μΆœλ°œμ μ—μ„œ 도착점을 갈 수 μžˆλŠ” 경우만 μž…λ ₯으둜 μ£Όμ–΄μ§„λ‹€.

좜λ ₯

첫째 쀄에 좜발 λ„μ‹œμ—μ„œ 도착 λ„μ‹œκΉŒμ§€ κ°€λŠ”λ° λ“œλŠ” μ΅œμ†Œ λΉ„μš©μ„ 좜λ ₯ν•œλ‹€.

λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€

'Algorithm Problem > Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[python] λ°±μ€€ - 5014. μŠ€νƒ€νŠΈλ§ν¬  (0) 2020.09.24
[python] λ°±μ€€ - 3055. νƒˆμΆœ  (0) 2020.09.23
[python] λ°±μ€€ - 2225. ν•©λΆ„ν•΄  (0) 2020.09.22
[python] λ°±μ€€ - 9251. LCS  (0) 2020.09.22
[python] λ°±μ€€ - 11497. ν†΅λ‚˜λ¬΄  (0) 2020.09.21
    'Algorithm Problem/Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [python] λ°±μ€€ - 5014. μŠ€νƒ€νŠΈλ§ν¬
    • [python] λ°±μ€€ - 3055. νƒˆμΆœ
    • [python] λ°±μ€€ - 2225. ν•©λΆ„ν•΄
    • [python] λ°±μ€€ - 9251. LCS
    deo2kim
    deo2kim
    μ½”λ”© κΈ°λ‘ν•˜κΈ°

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”