์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[๋ฐฑ์ค€] 2178๋ฒˆ: ๋ฏธ๋กœ ํƒ์ƒ‰

๐Ÿ“Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ


๐Ÿ“ƒ ๋ฌธ์ œ

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

 

2178๋ฒˆ: ๋ฏธ๋กœ ํƒ์ƒ‰

์ฒซ์งธ ์ค„์— ๋‘ ์ •์ˆ˜ N, M(2 ≤ N, M ≤ 100)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” M๊ฐœ์˜ ์ •์ˆ˜๋กœ ๋ฏธ๋กœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ์ˆ˜๋“ค์€ ๋ถ™์–ด์„œ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net


โœ ํ’€์ด๊ณผ์ •

์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋ฏ€๋กœ bfs๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ

'1743๋ฒˆ: ์Œ์‹๋ฌผ ์“ฐ๋ ˆ๊ธฐ' ๋ฌธ์ œ๋ฅผ ๋จผ์ € ํ’€์—ˆ๋Š”๋ฐ ๋‹ค์‹œ ๋Œ์•„์™€์„œ ๋ฌธ์ œ๋ฅผ ๋ณด๋‹ˆ ๋น„์Šทํ•˜๊ฒŒ ํ’€๋ฉด ๋˜๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

import sys
from collections import deque

n, m = map(int, input().split())

board=[]
visited =[[0]*m for _ in range(n)]
for _ in range(n):
    board.append(list(input()))

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

# ์‹œ์ž‘์ 
queue = deque()
visited[0][0] = 1
queue.append((0, 0))

while queue:
    cur_x, cur_y = queue.popleft()
    if cur_x == n-1 and cur_y == m-1:
        print(visited[cur_x][cur_y])
        break

    for i in range(4):
        X = cur_x + dx[i]
        Y = cur_y + dy[i]

        if 0 <= X < n and 0 <= Y < m and visited[X][Y] == 0 and board[X][Y] == '1':
            queue.append((X, Y))
            visited[X][Y] = visited[cur_x][cur_y] + 1

 

1743๋ฒˆ๊ณผ ๋‹ค๋ฅด๊ฒŒ visited ๋ฆฌ์ŠคํŠธ์— ์ง€๋‚˜์˜จ ์นธ ์ˆ˜๋ฅผ ์ €์žฅํ•˜์˜€๋‹ค.


Deque ์ดˆ๊ธฐํ™” Error

# ์˜ค๋ฅ˜ 1
queue = deque((0, 0))
visited[0][0] = 1

# ์˜ค๋ฅ˜ 2
queue = deque([0, 0])
## deque([0, 0])

# ์˜ฌ๋ฐ”๋ฅธ ์ฝ”๋“œ 1
queue = deque()
visited[0][0] = 1
queue.append((0, 0))

# ์˜ฌ๋ฐ”๋ฅธ ์ฝ”๋“œ 2
queue = deque([(0, 0)])
## deque([(0, 0)])

while queue:
    cur_x, cur_y = queue.popleft()
    if cur_x == n-1 and cur_y == m-1:
        print(visited[cur_x][cur_y])
        break

TypeError: 'int' object is not iterable

 

์‹œ์ž‘์ ์„ deque์— ๋„ฃ๋Š” ์ฝ”๋“œ๋ฅผ (์˜ค๋ฅ˜ 1), (์˜ค๋ฅ˜ 2) ์ฒ˜๋Ÿผ ์ž‘์„ฑํ–ˆ๋”๋‹ˆ TypeError๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

deque ๋‚ด์— tuple์ด๋‚˜ list๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด deque([0, 0]) ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฏ€๋กœ

while ๋ฌธ ๋‚ด์—์„œ cur_x๋Š” 0์„ ํ• ๋‹น๋ฐ›๊ณ , cur_y๋Š” ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ์ด ์—†์–ด์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค.

 

popleft๋กœ x, y๋ฅผ ์–ป๊ณ  ์‹ถ๋‹ค๋ฉด,

1) append ์‚ฌ์šฉ

2) [( )] ์‚ฌ์šฉ

 

 

https://trey-de.tistory.com/14

 

Python์—์„œ deque.popleft() ์‹คํ–‰ ์‹œ, iterable error๊ฐ€ ๋œฌ๋‹ค๋ฉด?

BFS๋ฌธ์ œ๋“ค์„ ํ’€๋‹ค๋ณด๋ฉด, x์™€ y์ขŒํ‘œ๋ฅผ ํ์— ๋„ฃ๊ณ  ๋นผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. (์˜ˆ: www.acmicpc.net/problem/1926) ๋ฌผ๋ก  ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ ์šฉํ•˜๋ฉด ๋˜๊ฒ ์ง€๋งŒ, 1) ํ๋ฅผ ์ƒ์„ฑํ•œ ํ›„์— ๋ฆฌ์ŠคํŠธ ๋˜๋Š” ํŠœํ”Œ ์ž๋ฃŒํ˜•์œผ๋กœ ํ์—

trey-de.tistory.com