본문 바로가기
Programming/Programmers

[프로그래머스] 삼각 달팽이 (Python)

by 데이터현 2021. 11. 2.

https://programmers.co.kr/learn/courses/30/lessons/68645

 

코딩테스트 연습 - 삼각 달팽이

5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11]

programmers.co.kr

 

규칙을 찾아서 구현하면 된다.

항상 아래 , 오른쪽, 왼쪽 위 방향으로 움직인다.

 

나의 풀이

def solution(n):
    a = [['']*n for _ in range(n)]
    check = 0
    now = [-1,0]
    num = 1
    answer = []
    for i in range(n,0,-1):
        x, y = now
        if check ==0: # down
            now = [x+i,y]
            for chunk in range(1,i+1):
                a[x+chunk][y] = num
                num+=1
            check = 1
        elif check ==1: # right:
            now = [x,y+i]
            for chunk in range(1,i+1):
                a[x][y+chunk] = num
                num+=1
            check = 2
        elif check ==2 : # upleft:
            now = [x-i,y-i]
            for chunk in range(1, i+1):
                a[x-chunk][y-chunk] = num
                num+=1
            check = 0
    for i in range(n):
        for j in range(i+1):
            answer.append(a[i][j])
    return answer

댓글