보글보글 개발일지
반응형

문제

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

 

반응형
profile

보글보글 개발일지

@보글

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!