문제
https://www.acmicpc.net/problem/2178
2178번: 미로 탐색
첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.
www.acmicpc.net
풀이
예를 들어 101010이 입력됐다면, C++이라면 String으로 입력받아서 하나씩 저장했다면,
파이썬에서는 아래와 같이
for _ in range(n):
graph.append(list(map(int,read().rstrip())))
이 코드를 쓴다. rstrip쓰는 이유는 readline 방식이 \n도 같이 입력받기 때문에 이를 지우기 위함이다.
더 쉽게 입력 받는 방법은
n,m = map(int,input().split())
a = [list(map(int,input())) for _ in range(n)]
가장 기본적인 BFS이니까 코드 설명은 생략..
코드
import sys
from collections import deque
read = sys.stdin.readline
n, m = map(int, read().split())
graph = []
for _ in range(n):
graph.append(list(map(
int,
read().rstrip()))) # readline의 경우 맨 뒤에 '\n'까지 입력받으므로 제거해줘야 함
#하우상좌
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
def bfs(x, y):
queue = deque()
queue.append((x, y))
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < m and graph[nx][ny] == 1:
queue.append((nx, ny))
graph[nx][ny] = graph[x][y] + 1
return graph[n - 1][m - 1]
print(bfs(0, 0))
원래 C++하다가 교육듣는 데서 자바로 배워서.. 자바로 코딩하다가
파이썬이 젤 쉽대서 파이썬으로 시작한 나의 알고리즘 공부.....
어쩌다가 세 언어로 전부 문제를 풀게되어 밑에 코드를 첨부한다.
자바 코드
https://bbostudy.tistory.com/62
[백준/2178][Java] 미로탐색
문제 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다
bbostudy.tistory.com
C++ 코드
https://bbostudy.tistory.com/9
[백준/2178번][C++] 미로 탐색
www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.n
bbostudy.tistory.com
'알고리즘' 카테고리의 다른 글
[백준/1436][Python] 영화감독 숌 (0) | 2023.03.29 |
---|---|
[백준/1926][Python] 그림 (0) | 2023.03.27 |
[백준/3109][Java] 빵집 (0) | 2023.03.24 |
[백준/1717][Java] 집합의 표현 - 유니온 파인드 예제 (0) | 2023.03.21 |
[백준/2178][Java] 미로탐색 (0) | 2023.03.20 |