본문 바로가기

Code Up

[Code Up] - Python 기초 100제, 6098번 풀이 - 티스토리

 

 

 

문제 설명

 

주어진 규칙에 따라 개미가 움직인 방향에 해당되는 미로 상자를 출력하자

 

 

 

 

풀이

 

box = []

for i in range(10):
    box.append([])

    for j in range(10):
        box[i].append(0)

for i in range(10):
    box[i] = list(map(int, input().split()))

x = 0
y = 0

while (True):

    if (box[1+y][1+x] != 1):
        box[1+y][1+x] = 9
        x += 1
    else:
        x -= 1
        y += 1
        if(box[1+y][1+x] == 1):
            break

    if (box[1+y][1+x] == 2):
        box[1+y][1+x] = 9
        break

for i in range(10):
    for j in range(10):
        print(box[i][j], end=' ')
    print()

 

 

 

 

해설

 

2차월 배열 box를 선언한다

무한 루프내에서 개미의 시작위치 (2, 2)부터 벽인지 아닌지 검사하고 아니면 해당 위치에 9를 대입 후  x좌표를 증가 시킨다

만약 x좌표를 증가 시킨 후 벽에 충돌하면 다시 감소 후 y좌표를 증가 시킨다.

이때 y좌표를 증가 시켰는데 벽에 충돌하면 게임 끝이므로 무한루프를 탈출한다

x좌표 또는 y좌표를 증가 시킨 후 해당 좌표에 2가 존재하면 해당 좌표에 9를 대입 후 게임 종료 시킨다

 

 

 

 

다른 분 풀이

 

array = []

for i in range(10):
    array.append(list(map(int, input().split())))

x, y = 1, 1

while True:
    if (array[x][y] == 0):
        array[x][y] = 9
    elif (array[x][y] == 2):
        array[x][y] = 9
        break

    if ((array[x][y+1] == 1 and array[x+1][y] == 1)):
        break

    if (array[x][y+1] != 1):
        y = y + 1
    elif (array[x+1][y] != 1):
        x = x + 1

for i in range(10):
    for j in range(10):
        print(array[i][j], end=' ')
    print()