백준 4485. 녹색 옷 입은 애가 젤다지?

2024. 11. 4. 14:55·백준

https://www.acmicpc.net/problem/4485

1. 큐 풀이

from collections import deque
import sys
input = sys.stdin.readline

cnt = 0

while True:
    n = int(input())
    if n == 0:
        break
    cnt += 1

    arr = [list(map(int,input().split())) for _ in range(n)]
    dp = [[float('inf') for _ in range(n)] for _ in range(n)]
    dp[0][0] = arr[0][0] # 시작점 설정 꼭 해주기!!

    q = deque([[0,0]])

    while q:
        i, j = q.popleft()
        for di, dj in [[0,1],[0,-1],[-1,0],[1,0]]:
            ni, nj = i+di, j+dj
            if 0 <= ni < n and 0 <= nj < n:
                new_cost = dp[i][j] + arr[ni][nj]
                if new_cost < dp[ni][nj]:  # 더 적은 비용이면 갱신
                    dp[ni][nj] = new_cost
                    q.append([ni, nj])  # 갱신된 경우에만 큐에 추가

    print(f"Problem {cnt}: {dp[n - 1][n - 1]}")

2. 힙 풀이(훨씬 빠름!)

import heapq
import sys
input = sys.stdin.readline

cnt = 0
inf = int(1e9)

while True:
    n = int(input())

    if n == 0:
        break

    cnt += 1
    arr = [list(map(int,input().split())) for _ in range(n)]
    q = []
    v = [[inf] * n for _ in range(n)]
    v[0][0] = 0
    heapq.heappush(q,(arr[0][0],0,0))

    while q:
        c, i, j = heapq.heappop(q)
        for ti, tj in [(1, 0), (-1, 0), (0, 1), (0, -1)]:
            ni, nj = i + ti, j + tj
            if 0 <= ni < n and 0 <= nj < n:
                cost = c + arr[ni][nj]
                if v[ni][nj] > cost:
                    v[ni][nj] = cost
                    heapq.heappush(q,(cost,ni, nj))

    print(f'Problem {cnt}: {v[n-1][n-1]}')
저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 18352. 특정 거리의 도시 찾기  (0) 2024.11.06
백준 1253. 좋다  (0) 2024.11.06
백준 1865. 웜홀  (0) 2024.11.03
백준 1197. 최소 스패닝 트리  (0) 2024.11.03
백준 1240. 노드사이의 거리  (0) 2024.11.03
'백준' 카테고리의 다른 글
  • 백준 18352. 특정 거리의 도시 찾기
  • 백준 1253. 좋다
  • 백준 1865. 웜홀
  • 백준 1197. 최소 스패닝 트리
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    개발자취업
    항해99
    코딩테스트준비
    Til
    99클럽
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
백준 4485. 녹색 옷 입은 애가 젤다지?
상단으로

티스토리툴바