[Algorithm] 달팽이 배열

5128 단어 python달팽이TILTIL

[ 달팽이 배열이란 ]

달팽이 배열은 N X N 배열에 1부터 까지의 자연수를 달팽이집 모양으로 채우는 것을 말한다.

아래 그림은 5 X 5 달팽이 배열이다.

위의 그림을 잘 보면, 각 라인 당 채우는 숫자의 개수가 5, 4, 4, 3, 3, 2, 2, 1, 1 이런식으로 변하는 것을 확인할 수 있다. 이러한 규칙을 잘 이용하면 다음과 같이 구현할 수 있다.

N = 5
arr = [[0] * N for _ in range(N)]

num = 0  # 배열에 넣을 숫자
y = 0  # 줄 위치
x = -1  # 칸 위치
size = N  # 배열 크기
step = 1  # 증가/감소 크기: 1, -1

while size > 0:
    for _ in range(size):  	# 가로로 이동
        x += step
        num += 1
        arr[y][x] = num
    size -= 1

    for _ in range(size):	# 세로로 이동
        y += step
        num += 1
        arr[y][x] = num
    step *= -1

for i in range(N):
    for j in range(N):
        print("%2d " % arr[i][j], end='')
    print()
  • 실행 결과
 1  2  3  4  5 
16 17 18 19  6 
15 24 25 20  7 
14 23 22 21  8 
13 12 11 10  9 

🔗 자세한 동작 원리는 여기 참고하기


[ 참고자료 ]

https://codepractice.tistory.com/81
https://choykim.tistory.com/2
https://blog.daum.net/sualchi/13720896

좋은 웹페이지 즐겨찾기