알고리즘 -삼각달팽이

seonghyeon·2022년 2월 15일
0
def solution(n):
    answer = []
    floor = []
    start = 1

    # 삼각형 리스트
    for i in range(n):
        floor.append([0] * (i+1))
    
    # x는 가로축
    x = 0
    # y는 세로축 0부터시작해야함 아래에서 더해줄것이기 때문에 -1로 설정
    y = -1

    # 한면에서 방향이 바뀔때 마다 길이가 1씩 줄어듬 4 > 3 > 2 > 1
    # 이중 for문으로 j부터 n까지 출력 (길이만큼 돌기 위해서)
    # ex)n = 4  0,1,2,3 || 1,2,3 || 2,3 || 3 
    for j in range(n):
      for k in range(j , n):
        #0이면 아래, 1이면 오른쪽, 2면 위
        
        # 아래로 가기 때문에 세로축 + 1
        if j % 3 == 0:
            y += 1
        # 오른쪽으로 진행하기때문에 가로축 + 1
        elif j % 3 == 1:
            x += 1

        # 위로 진행하기 때문에 가로축 -1 , 세로축 -1
        elif j % 3 == 2:
            x -= 1
            y -= 1
        
        # 1부터 시작하는 start를 넣고 start에 +1 을 해준다
        floor[y][x] = start
        start += 1
        
    # floor 리스트 안의 리스트들을 answer에 더해줌
    for b in floor:
        answer += b
    return answer

0개의 댓글