Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- IPv4 주소체계
- 유형 변환
- auto 키워드
- C언어 스택 연산
- 입출력 관리자
- 회전 및 자리 이동 연산
- 주기억장치
- C언어 계산기 프로그램
- string유형
- 프로그래머스 배열만들기4
- 원형 연결 구조 연결된 큐
- 알고리즘 조건
- 네트워크 결합
- c언어 괄호검사
- 백준 파이썬
- 범위 기반 for문
- l-value참조자
- const l-value참조자
- C언어 덱
- r-value참조자
- 괄호 검사 프로그램
- LAN의 분류
- 프로그래머스 푸드 파이트 대회
- 운영체제 기능
- const화
- getline()함수
- 문자형 배열
- 문제해결 단계
- 논리 연산
- 값/참조/주소에 의한 전달
Archives
- Today
- Total
chyam
[백준] 2206번, python - 벽 부수고 이동하기 본문

from collections import deque
n, m = map(int,input().split())
li = []
direct = [[0,1],[0,-1],[1,0],[-1,0]]
res = float('inf')
for i in range(n):
li.append(list(map(int,input())))
def bfs():
cnt = 1
queue = deque([(0,0,0,cnt)])
visited = [[[False]*2 for _ in range(m)]for _ in range(n)]
visited[0][0][0] = True
while queue:
x, y,broken, cnt = queue.popleft() # 좌표, 깼는가, 몇번 이동?
if x == n-1 and y == m-1:
return cnt
for nx, ny in direct:
dx = x + nx
dy = y + ny
if 0 <= dx < n and 0 <= dy < m:
# 안깸. 그냥 이동
if li[dx][dy] == 0 and not visited[dx][dy][broken]:
visited[dx][dy][broken] = True
queue.append((dx,dy,broken,cnt+1))
# 벽 깸
elif broken == 0 and li[dx][dy] == 1:
visited[dx][dy][1] = True
queue.append((dx,dy,1,cnt+1))
return -1
print(bfs())'백준' 카테고리의 다른 글
| [백준] 9663번, python - N-Queen (0) | 2026.03.06 |
|---|---|
| [백준] 1759번, python - 암호 만들기 (1) | 2026.03.05 |
| [백준] 1005번,python - ACM Craft (0) | 2026.03.04 |
| [백준] 2252번, python - 줄 세우기 (위상 정렬) (0) | 2026.03.02 |
| [백준] 2294번,python - 동전 2 (0) | 2026.02.11 |
