반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

2178 미로 탐색 본문

코딩 테스트(Python)/백준, 프로그래머스

2178 미로 탐색

5_hyun 2022. 6. 4. 03:35
반응형

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

 

2178번: 미로 탐색

첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.

www.acmicpc.net

 

내 풀이(큐를 생각 못했다ㅠㅠ)

from collections import deque

n, m = map(int, input().split())
ary = []
for i in range(n):
    ary.append(list(map(int, input())))

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

def bfs(x,y):
    q = deque()
    q.append((x,y))
    
    while q:
        x, y = q.popleft()
        
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            
            if nx < 0 or nx >= n or ny < 0 or ny >= m:
                continue
            if ary[nx][ny] == 0:
                continue
            
            if ary[nx][ny] == 1:
                ary[nx][ny] = ary[x][y] + 1
                q.append((nx, ny))
    
    return ary[n-1][m-1]

print(bfs(0,0))

얼마전에 "이것이 취업을 위한 코딩 테스트다"에서 공부한 문제이다. 그래서 그 방식으로 풀어야겠다고 생각했다. 거의 비슷하게 생각했지만 가장 중요한 queue를 사용하지 못했다. 이 부분을 더 기억해야겠다.

반응형

'코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글

2606 바이러스  (0) 2022.06.06
2667 단지번호붙이기  (0) 2022.06.05
10815 숫자 카드  (1) 2022.06.02
프로그래머스) 더 맵게  (0) 2022.05.01
프로그래머스) 기능개발  (0) 2022.05.01
Comments