해설
먼저 입력을 array라는 리스트에 2차원 배열로 입력받습니다.
그리고 while 반복문을 사용합니다.
while 반복문에서는
1. 현재 칸이 0이라면 9로 변환하고, 현재 칸이 2라면 9로 변환한 뒤 반복문을 종료시킵니다.
2. 오른쪽과 아래가 모두 1이라면 반복문을 종료시킵니다.
3. 오른쪽이 1이 아니라면 y를 증가시키고, 오른쪽이 1이고 아래쪽이 1이 아니라면 x를 증가시킵니다.그리고 마지막에 이중 for 반복문으로 출력을 해주면 됩니다.
출처: [<https://s0ng.tistory.com/entry/CodeUp-코드업-기초-100제-1099번-풀이-파이썬python>](<https://s0ng.tistory.com/entry/CodeUp-%EC%BD%94%EB%93%9C%EC%97%85-%EA%B8%B0%EC%B4%88-100%EC%A0%9C-1099%EB%B2%88-%ED%92%80%EC%9D%B4-%ED%8C%8C%EC%9D%B4%EC%8D%ACpython>) [S0NG의 정보보안 블로그:티스토리]
array = []
for i in range(10):
array.append(list(map(int, input().split()))) # 한 줄씩 리스트로 저장하는 방법
x, y = 1, 1 #초기 위치 2,2이지만 0부터 인덱스 시작이므로
while True: # 무한루프
if (array[x][y] == 0): # 이동 가능한 경우 -> 9로 변경
array[x][y] = 9
elif (array[x][y] == 2): # 먹이인 경우 -> 9로 변경 후 종료
array[x][y] = 9
break
if ((array[x][y+1] == 1 and array[x+1][y] == 1)): # 다음 위치가 벽인 경우
break
elif (array[x][y+1] != 1): # y좌표 이동 가능한 경우
y = y + 1
elif (array[x+1][y] != 1): # x좌표 이동 가능한 경우
x = x + 1
for i in range(10):
for j in range(10):
print(array[i][j], end=' ')
print()
def find_path(maze, x, y):
# 범위를 벗어나거나 벽에 도착한 경우
if x < 0 or y < 0 or x >= len(maze) or y >= len(maze[0]) or maze[x][y] == 1:
return False
# 먹이를 찾은 경우
if maze[x][y] == 2:
maze[x][y] = 9 # 성실한 개미의 경로 표시
return True
# 현재 위치를 성실한 개미의 경로로 표시
maze[x][y] = 9
# 오른쪽으로 이동을 시도
if find_path(maze, x, y + 1):
return True
# 아래쪽으로 이동을 시도
if find_path(maze, x + 1, y):
return True
# 먹이를 찾지 못하고 막다른 길인 경우
return True
maze = [[0] * 10 for _ in range(10)]
for i in range(10):
while True:
# 사용자로부터 공백으로 구분된 10개의 정수를 입력
values = input().split()
maze[i] = [int(value) for value in values]
break
find_path(maze, 1, 1)
for row in maze:
for cell in row:
print(cell, end=' ')
print()
1,2번 답안 합본
def find_path(maze, x, y):
# 범위를 벗어나거나 벽에 도착한 경우
if x < 0 or y < 0 or x >= len(maze) or y >= len(maze[0]) or maze[x][y] == 1:
return False
# 먹이를 찾은 경우
if maze[x][y] == 2:
maze[x][y] = 9 # 성실한 개미의 경로 표시
return True
# 현재 위치를 성실한 개미의 경로로 표시
maze[x][y] = 9
# 오른쪽으로 이동을 시도
if find_path(maze, x, y + 1):
return True
# 아래쪽으로 이동을 시도
if find_path(maze, x + 1, y):
return True
# 먹이를 찾지 못하고 막다른 길인 경우
return True
maze = []
for i in range(10):
maze.append(list(map(int, input().split()))) # 한 줄씩 리스트로 저장하는 방법
find_path(maze, 1, 1)
for row in maze:
for cell in row:
print(cell, end=' ')
print()