y, x = -1, 0
    num = 1
    
    for i in range(n):
        for _ in range(i, n):
            angle = i % 3
            #순서대로 아래 -> 오른쪽 -> 위 (반시계 나선형)
            if angle == 0: y += 1
            elif angle == 1: x += 1 
            elif angle == 2: y -= 1; x -= 1  #;는 줄바꿈 기호이며, 코드 블록의 통일성을 위해 사용했습니다.
            res[y][x] = num
            num += 1

    이전 정답 코드에서는 방향 전환을 하려면 현재 배열의 진행 방향에서 충돌(=나아갈 방향이 없는 상황)을 감지했을 때가 기준이 되었지만, 이번에는 방식을 조금 바꿔 현재 각도에서 바로 직접적으로 좌표를 변경하는 방식으로 접근하겠습니다. 다뤄야 할 방향이 많고 복잡하다면 방향 데이터를 미리 변수로 만들어 사용하는 것이 좋지만, 지금처럼 진행 방향이 고정되어 있고 그 개수가 적다면 직접적으로 위치를 담당하는 변수에서 계산하게 만들어 직관성을 높일 수 있습니다.

    또한, while 문 대신 for 문을 사용하여 n의 크기에 맞춰 최대 크기만큼 반복하도록 조건문을 작성했습니다. n이 4라면 for 문을 순회하면서 4 + 3 + 2 + 1번 탐색과 할당 작업을 수행합니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.