[jungol] 1337 : 달팽이삼각형 -python code

위대하신 님·2023년 1월 25일
0

달팽이 삼각형 문제를 검색해봤는데 다 코드가 너무 긴 것 같아서
한번 짧고 이해가 쉽도록 짜려고 해봤는데
미숙하지만 그래도 어떤 사람들에게는 도움이 될 것 같아 공유합니다^^

문제

삼각형의 높이 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()
           


0개의 댓글