티스토리 뷰
교재에 서술된 정답 코드가 아닌, 제가 직접 작성한 코드입니다.
- 최소 이동 칸을 구하기 위한 것이므로 오른쪽 이동과 아래쪽 이동만 고려하면 된다.
- 만약 어떤 칸의 오른쪽과 왼쪽에 모두 괴물이 있다면 해당 칸으론 더 이상 이동할 수 없으므로, count에서 -1 해야 한다.
- 다만 마지막 칸의 경우에는 j + 1 < m과 i + 1 < n 때문에 flag가 True라서 count - 1 되므로, return 시 count에 1을 더해주어야 한다.
from collections import deque
def solution(x, y):
graph[x][y] = 0
queue = deque([(x, y)])
count = 0
while queue:
i, j = queue.popleft()
count += 1
flag = True
if j+1 < m and graph[i][j+1]:
flag = False
queue.append((i, j+1))
if i+1 < n and graph[i+1][j]:
flag = False
queue.append((i+1, j))
if flag:
count -= 1
return count + 1 # 마지막 칸일 때도 -1 되기 때문에 count + 1 해야 한다.
n, m = map(int, input().split())
graph = [list(map(int, input())) for _ in range(n)]
print(solution(0, 0))
728x90
'코딩 테스트' 카테고리의 다른 글
[이것이 코딩 테스트다] 실전 문제 4-3 게임 개발 (0) | 2023.05.09 |
---|---|
파이썬 문자열에서 특정 문자를 찾을 때 find() VS in (0) | 2023.05.03 |
[이것이 코딩 테스트다] 예제 4-1 상하좌우 (0) | 2023.05.01 |
[파이썬] 특정 알파벳의 순서 찾기 (ord 함수 사용) (0) | 2022.03.08 |