본문 바로가기

매일매일 (Everyday)

[코드업 기초 100제] - 성실한 개미 문제 - Python

꾸준히 하루에 한문제씩 풀면서 코드업 기초 100제를 마무리 했습니다. 성실한 개미 문제가 제일 오래걸렸네요. 확실히 머신러닝이나 데이터분석과는 다르게 직접 코딩하면서 알고리즘 짜는 것이 저한테는 많이 어려웠습니다.

 

이번 문제는 특히 파이썬에서는 잘 돌아갔는데, 코드업 사이트 내 테스트케이스에서 계속 아웃풋이 안나와서 처음 입력하는 코드를 바꿨더니 잘 출력이 되었습니다.

# 최종정답
maze = []
for i in range(10):
    m = [int(x) for x in input().split()]
    maze.append(m)

i = 1
j = 1

while True :
    
    if maze[i][j] == 2 :
        maze[i][j] = 9
        break
    elif maze[i+1][j] == 1 and maze[i][j+1] == 1 :
        maze[i][j] = 9
        break
    maze[i][j] = 9
    if maze[i][j+1] == 1 :
        i += 1
    elif maze[i+1][j] == 1 :
        j += 1
    else :
        j += 1


for a in range(10) :
    for b in range(10) :
        print(maze[a][b], end = ' ')
    print()

아래 코드는 위 코드와 다르게 문제에서 주어진 예시를 복사하여 input에 넣었을때 해결되는 코드입니다.

maze = [[0 for c in range(10)] for r in range(10)]

x = list(map(int, input().split()))

for r in range(10) :
    for c in range(10) :
        maze[r][c] = x[(r*10)+c]
        
i = 1 # 인덱싱할때 1 더하는게 귀찮아서 아예 1로 설정
j = 1

while True :
    
    if maze[i][j] == 2 :
        maze[i][j] = 9
        break
    elif maze[i+1][j] == 1 and maze[i][j+1] == 1 :
        maze[i][j] = 9
        break
    maze[i][j] = 9
    if maze[i][j+1] == 1 :
        i += 1
    elif maze[i+1][j] == 1 :
        j += 1
    else :
        j += 1


for a in range(10) :
    for b in range(10) :
        print(maze[a][b], end = ' ')
    print()

 

 

코드업 기초 예제들을 풀으면서 느꼈던 점은,

1. 반복은 루프로

2. 기본기의 중요성

3. 안다고 다 아는게 아님

 

이었습니다.

 

알고리즘 공부도 꾸준히 해야한다는 좋은 경험이었습니다.