728x90
> 파이썬
📖 문제 : D4 - 7일차 미로1 (Python)
아래 그림과 같은 미로가 있다. 16*16 행렬의 형태로 만들어진 미로에서 흰색 바탕은 길, 노란색 바탕은 벽을 나타낸다.
가장 좌상단에 있는 칸을 (0, 0)의 기준으로 하여, 가로방향을 x 방향, 세로방향을 y 방향이라고 할 때, 미로의 시작점은 (1, 1)이고 도착점은 (13, 13)이다.
주어진 미로의 출발점으로부터 도착지점까지 갈 수 있는 길이 있는지 판단하는 프로그램을 작성하라.
아래의 예시에서는 도달 가능하다.
아래의 예시에서는 출발점이 (1, 1)이고, 도착점이 (11, 11)이며 도달이 불가능하다.
[입력]
각 테스트 케이스의 첫 번째 줄에는 테스트 케이스의 번호가 주어지며, 바로 다음 줄에 테스트 케이스가 주어진다.
총 10개의 테스트케이스가 주어진다.
테스트 케이스에서 1은 벽을 나타내며 0은 길, 2는 출발점, 3은 도착점을 나타낸다.
[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 도달 가능 여부를 1 또는 0으로 표시한다 (1 - 가능함, 0 - 가능하지 않음).
내 코드
from collections import deque
dy = [-1, 0, 1, 0]
dx = [0, -1, 0, 1]
T = 10
def BFS(sy, sx):
visited = [[0] * 16 for _ in range(16)]
visited[sy][sx] = 1
queue = deque()
queue.append([sy, sx])
while queue:
y, x = queue.popleft()
for i in range(4):
yy, xx = y + dy[i], x + dx[i]
if 0 <= yy < 16 and 0 <= xx < 16:
if visited[yy][xx] == 0:
if board[yy][xx] == 0:
visited[yy][xx] = 1
queue.append([yy, xx])
elif board[yy][xx] == 3:
return 1
return 0
for test_case in range(1, T + 1):
N = int(input())
board = [list(map(int, input())) for _ in range(16)]
result = BFS(1, 1)
print(f'#{test_case} {result}')
swea
https://swexpertacademy.com/main/main.do
728x90
'SAMSUNG > SSAFY 준비 (swea)' 카테고리의 다른 글
[SWEA 1218번] D4 - 괄호 짝짓기 (Python) (0) | 2023.11.07 |
---|---|
[SWEA 2819번] D4 - 격자판의 숫자 이어 붙이기 (Python) (0) | 2023.11.07 |
[SWEA 1210번] D4 - ladder1 (Python) (0) | 2023.11.07 |
[SWEA 1249번] D4 - 보급로 (Python) (0) | 2023.11.07 |
[SWEA 1948번] D2 - 날짜 계산기 (Python) (0) | 2023.11.07 |