문제 풀이

108. 삼각 달팽이

zhelddustmq 2024. 8. 6. 14:24

문제 설명

정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.


제한사항
  • n은 1 이상 1,000 이하입니다.

입출력 예
n result
4 [1,2,9,3,10,8,4,5,6,7]
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]

 

정답 코드:

def solution(n):
    if n == 1:
        return [1]
    if n == 2:
        return [1, 2, 3]
    answer = []
    temp = [[None] * n for _ in range(n)] # n * n 배열 생성

    y = -1
    x = 0
    num = 1 # 달팽이 채우는 값
    # 그림대로 이차원 배열에 값을 넣는 코드
    for i in range(n):
        for j in range(i,n):
            # 아래
            if i % 3 == 0:
                y += 1
            # 오른쪽
            elif i % 3 == 1:
                x += 1
            # 대각선 왼쪽 위
            else:
                y -= 1
                x -= 1
            temp[y][x] = num
            num += 1

    for i in range(n):
        for j in range(n):
            if temp[i][j] == None:
                break
            answer.append(temp[i][j])

    return answer

'문제 풀이' 카테고리의 다른 글

111. 무인도 여행  (0) 2024.08.09
109. 연속된 부분 수열의 합  (0) 2024.08.07
107. 큰 수 만들기  (0) 2024.08.05
105. 쿼드압축 후 개수 세기  (0) 2024.08.01
103. 가장 큰 수  (0) 2024.07.30