달팽이 삼각형 문제를 검색해봤는데 다 코드가 너무 긴 것 같아서
한번 짧고 이해가 쉽도록 짜려고 해봤는데
미숙하지만 그래도 어떤 사람들에게는 도움이 될 것 같아 공유합니다^^
문제
삼각형의 높이 N을 입력받아서 아래와 같이 숫자 0부터 달팽이 모양으로 차례대로 채워진 삼각형을 출력하는 프로그램을 작성하시오.
< 처리조건 >
왼쪽 위부터 시계방향으로 오른쪽 아래로 이동하면서 숫자 0부터 N개를 채우고
다시 왼쪽으로, 다음은 위쪽으로 반복하면서 채워 나간다. (숫자 9 다음에는 0부터 다시 시작한다.)
n = int(input())
matrix = [[0 for i in range(n)] for j in range(n)]
dx = [1, -1, 0]
dy = [1, 0, -1]
x, y, direction, num = 0, 0, 0, 1
for _ in range(n**2): #사실 n**2번 돌기전에 멈춤
matrix[y][x] = num
nx, ny = x + dx[direction], y + dy[direction]
if 0 <= nx < n and 0 <= ny < n and matrix[ny][nx] == 0:
x, y = nx, ny
else:
direction = (direction + 1) % 3
x, y = x + dx[direction], y + dy[direction]
if matrix[y][x]!=0: # 삼각형이 모두 찼다는 뜻
break
num += 1
for y in range(n):
for x in range(n):
if y>=x:
print((matrix[y][x]-1)%10,end=' ')
print()