일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 11기
- Android
- 순열
- 백준
- 나머지
- 앱
- 코테
- Combination
- 11053
- 1182
- 1260
- 매일11시
- expo
- itertools
- Python
- 괄호
- 최소공배수
- LCS
- lcm
- 파이썬
- 홈화면
- permutation
- 9095
- 뒤로가기
- 안드로이드
- Kotlin
- 6603
- 11057
- 코틀린
- 11054
Archives
- Today
- Total
황소개발자
백준 2206 파이썬 python : 벽 부수고 이동하기 @@황소처럼 우직하게@@ 준내신기하네 본문
반응형
빨리 성장하자
import sys
input = sys.stdin.readline
h, w = map(int, input().split())
miro = [[] for i in range(h)]
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
for i in range(h):
ss = input().strip()
for s in ss:
miro[i].append(int(s))
dist = [[[0, 0] for j in range(w)] for i in range(h)]
def bfs(y, x, wall):
q = [[y, x, wall]]
dist[y][x][wall] = 1
while q:
now = q.pop(0)
for i in range(4):
y, x, z = now
ny = y + dy[i]
nx = x + dx[i]
if 0 <= nx < w and 0 <= ny < h:
if miro[ny][nx] == 0 and dist[ny][nx][z] == 0:
dist[ny][nx][z] = dist[y][x][z] + 1
q.append([ny, nx, z])
if z == 0 and miro[ny][nx] == 1 and dist[ny][nx][z + 1] == 0:
dist[ny][nx][z + 1] = dist[y][x][z] + 1
q.append([ny, nx, z + 1])
bfs(0, 0, 0)
ans = []
if dist[-1][-1][0] != 0 and dist[-1][-1][1] != 0:
print(min(dist[-1][-1][0], dist[-1][-1][1]))
elif dist[-1][-1][0] != 0:
print(dist[-1][-1][0])
elif dist[-1][-1][1] != 0:
print(dist[-1][-1][1])
else:
print(-1)
반응형
'백준 문제 풀이' 카테고리의 다른 글
백준 1463 파이썬 python : 1로 만들기 @@황소처럼 우직하게@@자 가자~ (0) | 2020.03.04 |
---|---|
백준 3055 파이썬 python : 탈출 @@황소처럼 우직하게@@ 테스트케이스가 놓치고 있는 반례, 메모리초과, 시간초과 해결 (0) | 2020.03.04 |
백준 1261 파이썬 python : 알고스팟 @@황소처럼 우직하게@@ 화이팅! (0) | 2020.03.03 |
백준 13549 파이썬 python : 숨바꼭질 3 @@황소처럼 우직하게@@끌끌 (0) | 2020.03.03 |
백준 14226 파이썬 python : 이모티콘 @@황소처럼 우직하게@@ 이게무슨.. (0) | 2020.03.03 |
Comments