반응형
https://www.acmicpc.net/problem/2178
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
내 코드
from collections import deque
import sys
input = sys.stdin.readline
n, m = map(int, input().split())#n개의 세로, m개의 가로
board = [list(map(int, input().rstrip())) for _ in range(n)]
dx = [0,0,1,-1]
dy = [1,-1,0,0]
q=deque()
q.append([0,0])
cnt =0
while q:
y,x =q.popleft()
for i in range(4):
nx = x+dx[i]
ny = y+dy[i]
if nx<0 or nx>=m or ny<0 or ny>=n:
continue
if board[ny][nx]==1:
q.append([ny, nx])
board[ny][nx] = board[y][x]+1
print(board[n-1][m-1])
Deque안에 리스트 형태로?
deque 사용법
- deque에는 iterable 한 형태가 들어갈 수 있으며, 리스트, 튜플, 문자열, 집합 등이 들어갈 수 있다.
- deque.pop() 은 마지막 원소를 꺼낸다.
- deque.popleft()는 첫 번째 원소를 꺼낸다.
- deque를 정렬하고 싶으면 deque(sorted(deque이름)) 선언하기
- deque.reverse() 하면 거꾸로 뒤집을 수 있다.
q=deque([0,0])
y,x =q.popleft()
이렇게 하면 오류가 나는데
q=deque()
q.append([0,0])
y,x =q.popleft()
이렇게 하면 오류가 나지 않는다.
왜지??구글링을 열심히 했지만 이유를 모르겠다...
반응형
'코딩테스트 대비 > 백준(BOJ)' 카테고리의 다른 글
| [Python][백준/BOJ] 5568번 : 카드 놓기 (0) | 2023.07.03 |
|---|---|
| [Python][백준/BOJ] 10974번 : 모든 순열 (0) | 2023.07.01 |
| [Python][백준/BOJ] 1012번 : 유기농 배추 (0) | 2023.07.01 |
| [Python][백준/BOJ] 2667번 : 단지번호붙이기 (0) | 2023.07.01 |
| [Python][백준/BOJ] 2606번 : 바이러스 (0) | 2023.07.01 |