๋ฐฐ๋„ˆ ์ด๋ฏธ์ง€

๋ฐฑ์ค€ 4485: ๋…น์ƒ‰ ์˜ท ์ž…์€ ์• ๊ฐ€ ์ ค๋‹ค์ง€?(ํŒŒ์ด์ฌ)

2025. 4. 25. 17:59ยท์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ’ก 2์ฐจ์› ๋งต์—์„œ์˜ ์ตœ์†Œ ๋น„์šฉ ๊ฒฝ๋กœ: Dijkstra ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„

๐Ÿง  ๋ฌธ์ œ ๋ฐฐ๊ฒฝ

N×N ํฌ๊ธฐ์˜ ๋งต์ด ์ฃผ์–ด์ง„๋‹ค.
๊ฐ ์นธ์—๋Š” ๋น„์šฉ์ด ์žˆ์œผ๋ฉฐ, ์šฐ๋ฆฌ๋Š” (0, 0)์—์„œ ์‹œ์ž‘ํ•ด (N-1, N-1)๋กœ ์ด๋™ํ•˜๊ณ ์ž ํ•œ๋‹ค.
์ด๋™์€ ์ƒํ•˜์ขŒ์šฐ๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ฐ ์นธ์„ ์ง€๋‚  ๋•Œ๋Š” ํ•ด๋‹น ์นธ์˜ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผ ํ•œ๋‹ค.

โœ… ๋ชฉํ‘œ: (0, 0)์—์„œ (N-1, N-1)๊นŒ์ง€์˜ ์ตœ์†Œ ๋น„์šฉ์„ ๊ตฌํ•˜๋ผ

๐Ÿ” ๊ธฐ๋ณธ ๊ตฌํ˜„: Dijkstra with ์šฐ์„ ์ˆœ์œ„ ํ

import sys
import heapq

sys.stdin = open('input.txt', 'r')

dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]

def dijkstra():
    heap = []
    heapq.heappush(heap, (arr[0][0], 0, 0))
    while heap:
        cost, x, y = heapq.heappop(heap)
        if x == N-1 and y == N-1:
            return cost

        for k in range(4):
            nx = x + dx[k]
            ny = y + dy[k]
            if nx < 0 or ny < 0 or nx >= N or ny >= N:
                continue
            new_cost = cost + arr[nx][ny]
            if visited[nx][ny] <= new_cost:
                continue
            visited[nx][ny] = new_cost
            heapq.heappush(heap, (new_cost, nx, ny))

count = 0
while True:
    count += 1
    N = int(input())
    if N == 0:
        break
    arr = [list(map(int, input().split())) for _ in range(N)]
    visited = [[float('inf')] * N for _ in range(N)]
    result = dijkstra()
    print(f"Problem {count}: {result}")

โ— ๋‚ด๊ฐ€ ๊ฒช์€ ๋ฌธ์ œ: ์กฐ๊ฑด ํ•˜๋‚˜๋กœ ์ธํ•œ ์‹œ๊ฐ„ ์ดˆ๊ณผ

๊ธฐ์กด ์ฝ”๋“œ:

if visited[nx][ny] <= new_cost:
    continue

๋ฌธ์ œ์ :

  • new_cost == visited[nx][ny]์ผ ๋•Œ๋„ continue ์ฒ˜๋ฆฌ๋จ → ๊ฒฝ๋กœ ๋ˆ„๋ฝ → ์‹œ๊ฐ„์ดˆ๊ณผ ๊ฐ€๋Šฅ

ํ•ด๊ฒฐ:

if visited[nx][ny] > new_cost:
    visited[nx][ny] = new_cost
    heapq.heappush(heap, (new_cost, nx, ny))

โœ… ์ •๋ฆฌ

  • Dijkstra์—์„œ ์กฐ๊ฑด ํ•˜๋‚˜(<= vs >)๊ฐ€ ์„ฑ๋Šฅ๊ณผ ์ •๋‹ต์„ ์ขŒ์šฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŒŒ์ด์ฌ์˜ int๋Š” ์ž๋™์œผ๋กœ ํฐ ์ •์ˆ˜๋„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๊ฑฑ์ • ์—†์Œ
  • ์‹œ๊ฐ„ ์ œํ•œ์ด ์žˆ๋Š” ๋ฌธ์ œ์—์„œ๋Š” ์ž‘์€ ์กฐ๊ฑด ์‹ค์ˆ˜๊ฐ€ ์ „์ฒด ์‹คํ–‰์‹œ๊ฐ„์„ ์ขŒ์šฐํ•  ์ˆ˜ ์žˆ๋‹ค

'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ฐฑ์ค€ 2075: N๋ฒˆ์งธ ํฐ ์ˆ˜(JAVA)  (0) 2025.05.06
๋ฐฑ์ค€ 13114: List of Unique Numbers(ํŒŒ์ด์ฌ)  (0) 2025.04.28
22251๋ฒˆ: ๋นŒ๋Ÿฐ ํ˜ธ์„(ํŒŒ์ด์ฌ)  (0) 2025.04.26
๋ฐฑ์ค€ 4179: ๋ถˆ!(ํŒŒ์ด์ฌ)  (0) 2025.04.26
๋ฐฑ์ค€ 1253: ์ข‹๋‹ค(ํŒŒ์ด์ฌ)  (0) 2025.04.25
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 13114: List of Unique Numbers(ํŒŒ์ด์ฌ)
  • 22251๋ฒˆ: ๋นŒ๋Ÿฐ ํ˜ธ์„(ํŒŒ์ด์ฌ)
  • ๋ฐฑ์ค€ 4179: ๋ถˆ!(ํŒŒ์ด์ฌ)
  • ๋ฐฑ์ค€ 1253: ์ข‹๋‹ค(ํŒŒ์ด์ฌ)
quokkaST
quokkaST
  • quokkaST
    stquokka
    quokkaST
    • ๊ฐœ๋ฐœ์ž (77)
      • n8n (2)
      • CS๊ณต๋ถ€ (46)
        • Java & Spring (15)
        • ์ธํ”„๋ผ (7)
        • ์šด์˜์ฒด์ œ & ์‹œ์Šคํ…œ (9)
        • ๊ธฐํƒ€ CS์ง€์‹ (7)
        • ๋„คํŠธ์›Œํฌ (6)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (2)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (16)
      • ํ”„๋กœ์ ํŠธ (8)
        • ๊ฐ์ •&๊ธˆ์œต์ฑ—๋ด‡ (8)
      • ๋ฆฌํŒฉํ† ๋ง (5)
        • horong (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”