Fantastic Chu's World

1099 : [기초-2차원배열] 성실한 개미 본문

Python/코드업

1099 : [기초-2차원배열] 성실한 개미

Mr_Chu 2020. 9. 4. 00:09

개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다.
(오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.)

 

미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.

단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는
더이상 이동하지 않고 그 곳에 머무른다고 가정한다.

 

성실한 개미가 이동한 경로를 9로 표시해 출력한다.

board = []
x = 1
y = 1

# 2차배열 input
for i in range(10):
    temp = list(map(int,input().split()))
    board.append(temp)
    
while True:
    if board[x][y] == 2: #먹이를 발견했을때
        board[x][y] = 9
        break
    elif board[x+1][y] == 1 and board[x][y+1] == 1: #가로막혔을때
        board[x][y] = 9
        break
    board[x][y] = 9
    if board[x][y+1] == 1: # 오른쪽이 벽이면 아래로 1칸
        x += 1
    elif board[x+1][y] == 1: # 아래쪽이 벽이면 오른쪽으로 1칸
        y += 1
    else: y += 1 # 주변에 벽이 없으면 오른쪽으로 1칸

for a in board:
    for b in a:
        print(b,end=' ')
    print()
Comments