더북(TheBook)

2. 반시계 방향(시작은 아래로)의 나선형 형태로 배열을 채워나갑니다.

나선형 형태로 배열을 채우는 기능을 제공하는 라이브러리나 함수가 없으므로 직접 정의해야 합니다.

먼저 배열에 반시계 방향을 적용하려면 처음에는 아래로 내려가야 하므로 밑으로 1칸씩 내려가야 하고, 그 다음은 오른쪽으로 진행하므로 오른쪽으로 1칸씩, 마지막으로는 좌측 대각선 위 방향으로 진행해야 하므로 위로 1칸, 좌측으로 1칸 진행하는 방식이 될 것입니다. 따라서 진행 방향을 관리하는 변수를 만들어 현재 방향에 따라 자동으로 진행할 방향을 선택할 수 있게 조정하는 것이 좋습니다.

dx = [0, 1, -1]
dy = [1, 0, -1]
x = y = angle = 0
cnt = 1
size = (n + 1) * n // 2      #len(snail)과 같습니다.
while cnt <= size:
    snail[y][x] = cnt
    ny = y + dy[angle]
    nx = x + dx[angle]
    cnt += 1

또한, 최대 반복 횟수를 구하려면 1부터 n까지의 합을 계산해야 합니다. for 문을 사용해서 계산할 수도 있으나 공식 로 계산하면 단 한 번만으로 합을 구할 수 있습니다. //은 나눗셈의 몫만 반환하는 파이썬 연산자로 int()로 형 변환하는 것을 목적으로 합니다.

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