반응형
파이썬 문법에 익숙해지기 위해 CodeUp 기초 100제를 풀어보았습니다.
문제
개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다.
미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지
오른쪽 또는 아래쪽으로만 움직였다.
미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.
단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는
더이상 이동하지 않고 그 곳에 머무른다고 가정한다.
미로 상자의 테두리는 모두 벽으로 되어 있으며,
개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다.
입력 예시 | 출력 예시 |
1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 2 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 |
1 1 1 1 1 1 1 1 1 1 1 9 9 1 0 0 0 0 0 1 1 0 9 1 1 1 0 0 0 1 1 0 9 9 9 9 9 1 0 1 1 0 0 0 0 0 9 1 0 1 1 0 0 0 0 1 9 1 0 1 1 0 0 0 0 1 9 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 |
10*10 크기의 미로 상자의 구조와 먹이의 위치가 입력된다. | 성실한 개미가 이동한 경로를 9로 표시해 출력한다. |
풀이
array = [[0] * 10 for _ in range(10)]
for x in range(10):
xys = list(map(int, input().split()))
for y in range(10):
array[x][y] = xys[y]
# 시작점
a, b = 1, 1
b_out = False
while True:
b_out = array[a][b] == 2
array[a][b] = 9
if b_out:
break
# 오른쪽, 아래 모두 1 (더이상 이동 불가)
if array[a][b + 1] == 1 and array[a + 1][b] == 1:
break
# 오른쪽이 0, 2 (오른쪽 이동)
if array[a][b + 1] != 1:
b += 1
# 오른쪽이 1이고 아래쪽이 0, 2 (아래쪽 이동)
elif array[a + 1][b] != 1:
a += 1
for x in range(10):
for y in range(10):
print(array[x][y], end=' ')
print('')
반응형
'Python' 카테고리의 다른 글
[BOJ] 7576, 7569: 토마토 BFS 풀이 (Python) (0) | 2021.04.28 |
---|---|
[Python] ICS-CERT 권고문 웹 스크래핑 및 엑셀 저장 (BeautifulSoup/openpyxl) (0) | 2021.03.02 |
[CodeUp] 기초 100제 1098번 2차원 배열 설탕과자 뽑기 풀이 (Python) (0) | 2021.02.27 |
[CodeUp] 기초 100제 1097번 2차원 배열 바둑알 십자 뒤집기 풀이 (Python) (0) | 2021.02.27 |
[CodeUp] 기초 100제 1096번 2차원 배열 바둑판에 흰 돌 놓기 풀이 (Python) (0) | 2021.02.27 |
댓글