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] λ°±μ€€ 2206번 λ²½ λΆ€μˆ˜κ³  μ΄λ™ν•˜κΈ° - 파이썬(Python)
Algorithm/πŸ“˜ Baekjoon Judge

[BOJ] λ°±μ€€ 2206번 λ²½ λΆ€μˆ˜κ³  μ΄λ™ν•˜κΈ° - 파이썬(Python)

728x90

문제

N×M의 ν–‰λ ¬λ‘œ ν‘œν˜„λ˜λŠ” 맡이 μžˆλ‹€. λ§΅μ—μ„œ 0은 이동할 수 μžˆλŠ” 곳을 λ‚˜νƒ€λ‚΄κ³ , 1은 이동할 수 μ—†λŠ” 벽이 μžˆλŠ” 곳을 λ‚˜νƒ€λ‚Έλ‹€. 당신은 (1, 1)μ—μ„œ (N, M)의 μœ„μΉ˜κΉŒμ§€ μ΄λ™ν•˜λ € ν•˜λŠ”λ°, μ΄λ•Œ μ΅œλ‹¨ 경둜둜 μ΄λ™ν•˜λ € ν•œλ‹€. μ΅œλ‹¨κ²½λ‘œλŠ” λ§΅μ—μ„œ κ°€μž₯ 적은 개수의 칸을 μ§€λ‚˜λŠ” 경둜λ₯Ό λ§ν•˜λŠ”λ°, μ΄λ•Œ μ‹œμž‘ν•˜λŠ” μΉΈκ³Ό λλ‚˜λŠ” 칸도 ν¬ν•¨ν•΄μ„œ μ„Όλ‹€.

λ§Œμ•½μ— μ΄λ™ν•˜λŠ” 도쀑에 ν•œ 개의 벽을 λΆ€μˆ˜κ³  μ΄λ™ν•˜λŠ” 것이 μ’€ 더 κ²½λ‘œκ°€ μ§§μ•„μ§„λ‹€λ©΄, 벽을 ν•œ 개 κΉŒμ§€ λΆ€μˆ˜κ³  μ΄λ™ν•˜μ—¬λ„ λœλ‹€.

ν•œ μΉΈμ—μ„œ 이동할 수 μžˆλŠ” 칸은 μƒν•˜μ’Œμš°λ‘œ μΈμ ‘ν•œ 칸이닀.

맡이 μ£Όμ–΄μ‘Œμ„ λ•Œ, μ΅œλ‹¨ 경둜λ₯Ό ꡬ해 λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000)이 μ£Όμ–΄μ§„λ‹€. λ‹€μŒ N개의 쀄에 M개의 숫자둜 맡이 μ£Όμ–΄μ§„λ‹€. (1, 1)κ³Ό (N, M)은 항상 0이라고 κ°€μ •ν•˜μž.

좜λ ₯

첫째 쀄에 μ΅œλ‹¨ 거리λ₯Ό 좜λ ₯ν•œλ‹€. λΆˆκ°€λŠ₯ν•  λ•ŒλŠ” -1을 좜λ ₯ν•œλ‹€.

 

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

 

2206번: λ²½ λΆ€μˆ˜κ³  μ΄λ™ν•˜κΈ°

N×M의 ν–‰λ ¬λ‘œ ν‘œν˜„λ˜λŠ” 맡이 μžˆλ‹€. λ§΅μ—μ„œ 0은 이동할 수 μžˆλŠ” 곳을 λ‚˜νƒ€λ‚΄κ³ , 1은 이동할 수 μ—†λŠ” 벽이 μžˆλŠ” 곳을 λ‚˜νƒ€λ‚Έλ‹€. 당신은 (1, 1)μ—μ„œ (N, M)의 μœ„μΉ˜κΉŒμ§€ μ΄λ™ν•˜λ € ν•˜λŠ”λ°, μ΄λ•Œ μ΅œλ‹¨ 경둜

www.acmicpc.net

 

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

from collections import deque

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

dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
def bfs(x, y):
    visited = [[[0 for _ in range(2)] for _ in range(m)] for _ in range(n)]
    visited[x][y][0] = 1
    queue = deque()
    queue.append((x, y, 0))
    while queue:
        x, y, c = queue.popleft()
        if (x, y) == (n-1, m-1):
            return visited[x][y][c]
        for i in range(4):
            nx, ny = x + dx[i], y + dy[i]
            if nx < 0 or nx >= n or ny < 0 or ny >= m:
                continue
            if graph[nx][ny] == 1 and c == 0 and not visited[nx][ny][1]:
                queue.append((nx, ny, 1))
                visited[nx][ny][1] = visited[x][y][0] + 1
            elif graph[nx][ny] == 0 and not visited[nx][ny][c]:
                queue.append((nx, ny, c))
                visited[nx][ny][c] = visited[x][y][c] + 1
    return 0

result = bfs(0, 0)
if result:
    print(result)
else:
    print(-1)

μ΅œλ‹¨κ²½λ‘œ λ¬Έμ œμ΄λ―€λ‘œ BFSλ₯Ό μ‚¬μš©ν•˜λ©°, 문제의 ν•΅μ‹¬μ΄μž μ£Όμ˜ν•  점은 λ‹€μŒκ³Ό κ°™λ‹€.

  • 이동가λŠ₯ν•œ 경둜라고 ν•΄μ„œ λ¬΄μž‘μ • queue에 λ„£λŠ” 것이 μ•„λ‹ˆλΌ, 벽을 λΆ€μŠ¨ 횟수λ₯Ό ν•¨κ»˜ κΈ°λ‘ν•˜κΈ° μœ„ν•΄ 벽을 λ§Œλ‚¬μ§€λ§Œ 이전에 ν•œλ²ˆλ„ 벽을 λΆ€μˆœ 적이 μ—†λŠ” κ²½μš°μ™€ 벽을 λΆ€μˆœ νšŸμˆ˜μ™€ 상관없이 벽을 λ§Œλ‚˜μ§€ μ•Šμ•˜μ„ 경우λ₯Ό λ‚˜λˆ„μ–΄μ„œ queue에 μ‚½μž…ν•΄μ•Ό ν•œλ‹€.
  • λ°©λ¬Έ ν‘œμ‹œ(visited)의 경우 벽을 λΆ€μˆœ 적이 μžˆλŠ” κ²½μš°μ™€ 벽을 λΆ€μˆœ 적이 μ—†λŠ” 경우λ₯Ό λ”°λ‘œ λ‚˜λˆ„μ–΄ 기둝해야 ν•œλ‹€. 즉, 3차원 배열을 μ‚¬μš©ν•œλ‹€.
728x90

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

[BOJ] λ°±μ€€ 1890번 점프 - 파이썬(Python)  (0) 2022.08.13
[BOJ] λ°±μ€€ 16236번 μ•„κΈ° 상어 - 파이썬(Python)  (0) 2022.07.30
[BOJ] λ°±μ€€ 12904번 A와 B - 파이썬(Python)  (0) 2022.07.06
[BOJ] λ°±μ€€ 3109번 λΉ΅μ§‘ - 파이썬(Python)  (0) 2022.07.06
[BOJ] λ°±μ€€ 1781번 컡라면 - 파이썬(Python)  (0) 2022.07.04
    'Algorithm/πŸ“˜ Baekjoon Judge' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ 글이닀
    • [BOJ] λ°±μ€€ 1890번 점프 - 파이썬(Python)
    • [BOJ] λ°±μ€€ 16236번 μ•„κΈ° 상어 - 파이썬(Python)
    • [BOJ] λ°±μ€€ 12904번 A와 B - 파이썬(Python)
    • [BOJ] λ°±μ€€ 3109번 λΉ΅μ§‘ - 파이썬(Python)
    J1Yun
    J1Yun
    개발 κ΄€λ ¨ 기술 및 곡뢀 λ‚΄μš© 기둝μž₯

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