J1Yun
ZU-TECHLOG
J1Yun
전체 방문자
였늘
μ–΄μ œ
  • πŸ“‘ Category (135)
    • Algorithm (61)
      • πŸ“š Concept (6)
      • πŸ“˜ Baekjoon Judge (53)
      • πŸ“— Programmers (2)
    • Computer Science (42)
      • πŸ”’ Operating System (14)
      • πŸ“‘ Network (15)
      • πŸ’Ύ Database (8)
      • 🧩 Design Pattern (4)
      • πŸ”‘ Security (1)
    • Activities (12)
      • 🦁 λ©‹μŸμ΄μ‚¬μžμ²˜λŸΌ 9κΈ° (6)
      • πŸ’» SWλ§ˆμ—μŠ€νŠΈλ‘œ 13κΈ° (6)
    • Infra (1)
      • ☁️ AWS (1)
    • Languages (1)
      • πŸ’™ Python (1)
    • Backend (7)
      • πŸ”΅ Django (4)
      • 🟒 Node.js (3)
    • Ect. (8)
      • πŸ’¬ Talk (0)
      • πŸ—‚οΈ 개발직ꡰ μ·¨μ—… μ€€λΉ„μžλ£Œ (8)

λΈ”λ‘œκ·Έ 메뉴

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

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

250x250
hELLO Β· Designed By μ •μƒμš°.
J1Yun

ZU-TECHLOG

[BOJ] λ°±μ€€ 1261번 μ•Œκ³ μŠ€νŒŸ - 파이썬(Python)
Algorithm/πŸ“˜ Baekjoon Judge

[BOJ] λ°±μ€€ 1261번 μ•Œκ³ μŠ€νŒŸ - 파이썬(Python)

728x90

문제

μ•Œκ³ μŠ€νŒŸ μš΄μ˜μ§„μ΄ λͺ¨λ‘ λ―Έλ‘œμ— κ°‡ν˜”λ‹€. λ―Έλ‘œλŠ” N*M 크기이며, 총 1*1크기의 방으둜 이루어져 μžˆλ‹€. λ―Έλ‘œλŠ” 빈 λ°© λ˜λŠ” 벽으둜 이루어져 있고, 빈 방은 자유둭게 닀닐 수 μžˆμ§€λ§Œ, 벽은 λΆ€μˆ˜μ§€ μ•ŠμœΌλ©΄ 이동할 수 μ—†λ‹€.

μ•Œκ³ μŠ€νŒŸ μš΄μ˜μ§„μ€ μ—¬λŸ¬λͺ…μ΄μ§€λ§Œ, 항상 λͺ¨λ‘ 같은 방에 μžˆμ–΄μ•Ό ν•œλ‹€. 즉, μ—¬λŸ¬ λͺ…이 λ‹€λ₯Έ 방에 μžˆμ„ μˆ˜λŠ” μ—†λ‹€. μ–΄λ–€ λ°©μ—μ„œ 이동할 수 μžˆλŠ” 방은 μƒν•˜μ’Œμš°λ‘œ μΈμ ‘ν•œ 빈 방이닀. 즉, ν˜„μž¬ μš΄μ˜μ§„μ΄ (x, y)에 μžˆμ„ λ•Œ, 이동할 수 μžˆλŠ” 방은 (x+1, y), (x, y+1), (x-1, y), (x, y-1) 이닀. 단, 미둜의 λ°–μœΌλ‘œ 이동 ν•  μˆ˜λŠ” μ—†λ‹€.

벽은 ν‰μ†Œμ—λŠ” 이동할 수 μ—†μ§€λ§Œ, μ•Œκ³ μŠ€νŒŸμ˜ 무기 AOJλ₯Ό μ΄μš©ν•΄ 벽을 λΆ€μˆ˜μ–΄ 버릴 수 μžˆλ‹€. 벽을 λΆ€μˆ˜λ©΄, 빈 λ°©κ³Ό λ™μΌν•œ 방으둜 λ³€ν•œλ‹€.

λ§Œμ•½ 이 λ¬Έμ œκ°€ μ•Œκ³ μŠ€νŒŸμ— μžˆλ‹€λ©΄, μš΄μ˜μ§„λ“€μ€ ꢁ극의 무기 sudoλ₯Ό μ΄μš©ν•΄ 벽을 ν•œ λ²ˆμ— λ‹€ 없애버릴 수 μžˆμ§€λ§Œ, μ•ˆνƒ€κΉκ²Œλ„ 이 λ¬Έμ œλŠ” Baekjoon Online Judge에 μˆ˜λ‘λ˜μ–΄ 있기 λ•Œλ¬Έμ—, sudoλ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€.

ν˜„μž¬ (1, 1)에 μžˆλŠ” μ•Œκ³ μŠ€νŒŸ μš΄μ˜μ§„μ΄ (N, M)으둜 μ΄λ™ν•˜λ €λ©΄ 벽을 μ΅œμ†Œ λͺ‡ 개 λΆ€μˆ˜μ–΄μ•Ό ν•˜λŠ”μ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 미둜의 크기λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ°€λ‘œ 크기 M, μ„Έλ‘œ 크기 N (1 ≤ N, M ≤ 100)이 μ£Όμ–΄μ§„λ‹€. λ‹€μŒ N개의 μ€„μ—λŠ” 미둜의 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 숫자 0κ³Ό 1이 μ£Όμ–΄μ§„λ‹€. 0은 빈 방을 μ˜λ―Έν•˜κ³ , 1은 λ²½μ„ μ˜λ―Έν•œλ‹€.

(1, 1)κ³Ό (N, M)은 항상 λš«λ €μžˆλ‹€.

좜λ ₯

첫째 쀄에 μ•Œκ³ μŠ€νŒŸ μš΄μ˜μ§„μ΄ (N, M)으둜 μ΄λ™ν•˜κΈ° μœ„ν•΄ 벽을 μ΅œμ†Œ λͺ‡ 개 λΆ€μˆ˜μ–΄μ•Ό ν•˜λŠ”μ§€ 좜λ ₯ν•œλ‹€.


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

 

1261번: μ•Œκ³ μŠ€νŒŸ

첫째 쀄에 미둜의 크기λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ°€λ‘œ 크기 M, μ„Έλ‘œ 크기 N (1 ≤ N, M ≤ 100)이 μ£Όμ–΄μ§„λ‹€. λ‹€μŒ N개의 μ€„μ—λŠ” 미둜의 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 숫자 0κ³Ό 1이 μ£Όμ–΄μ§„λ‹€. 0은 빈 방을 μ˜λ―Έν•˜κ³ , 1은 λ²½μ„ 의미

www.acmicpc.net

 

πŸ’‘ 풀이 및 μ½”λ“œ

import heapq
INF = int(1e9)

m, n = map(int, input().split())
graph = []
for _ in range(n):
    graph.append(list(map(int, input())))

dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
result = [[INF]*m for _ in range(n)]
hq = []
heapq.heappush(hq, (0, 0, 0))
while hq:
    r, x, y = heapq.heappop(hq)
    for i in range(4):
        nx = x + dx[i]
        ny = y + dy[i]
        nr = r
        if nx < 0 or ny < 0 or nx >= n or ny >= m or result[nx][ny] != INF:
            continue 
        if graph[nx][ny] == 1:
            nr = r + 1
        if r < result[nx][ny] and result[nx][ny] >= nr:
            result[nx][ny] = nr
            heapq.heappush(hq, (nr, nx, ny))

if result[n-1][m-1] == INF:
    print(0)
else:
    print(result[n-1][m-1])

λ‹€μ΅μŠ€νŠΈλΌμ™€ λ„ˆλΉ„ μš°μ„  탐색 μ•Œκ³ λ¦¬μ¦˜μ„ μ μš©ν–ˆλ‹€. 각 μ’Œν‘œλ₯Ό 정점, μƒν•˜μ’Œμš°λŠ” κ°„μ„ , 벽을 κ°€μ€‘μΉ˜λ‘œ 두고 μ΅œλ‹¨ 경둜λ₯Ό κ΅¬ν•œλ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€. μ‹œκ°„ 초과 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ result[nx][ny] != INF 쑰건을 μΆ”κ°€ν•΄ 이미 λ“€λ¦° μ’Œν‘œλŠ” λ‹€μ‹œ 듀리지 μ•Šλ„λ‘ μ‘°μΉ˜ν–ˆλ‹€.

728x90

'Algorithm > πŸ“˜ Baekjoon Judge' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[BOJ] λ°±μ€€ 3190번 λ±€ - 파이썬(Python)  (3) 2022.02.23
[BOJ] λ°±μ€€ 1238번 νŒŒν‹° - 파이썬(Python)  (0) 2022.01.19
[BOJ] λ°±μ€€ 11000번 κ°•μ˜μ‹€ λ°°μ • - 파이썬(Python)  (0) 2022.01.10
[BOJ] λ°±μ€€ 2212번 μ„Όμ„œ - 파이썬(Python)  (0) 2022.01.10
[BOJ] λ°±μ€€ 15686번 μΉ˜ν‚¨ 배달 - 파이썬(Python)  (0) 2022.01.07
    'Algorithm/πŸ“˜ Baekjoon Judge' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ 글이닀
    • [BOJ] λ°±μ€€ 3190번 λ±€ - 파이썬(Python)
    • [BOJ] λ°±μ€€ 1238번 νŒŒν‹° - 파이썬(Python)
    • [BOJ] λ°±μ€€ 11000번 κ°•μ˜μ‹€ λ°°μ • - 파이썬(Python)
    • [BOJ] λ°±μ€€ 2212번 μ„Όμ„œ - 파이썬(Python)
    J1Yun
    J1Yun
    개발 κ΄€λ ¨ 기술 및 곡뢀 λ‚΄μš© 기둝μž₯

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