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

Turtle·2024년 8월 17일
0
post-thumbnail

🗃️문제 설명

👉단순 구현

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

🖥️코드

def solution(n):
    answer = []
    array = [[0] * n for _ in range(n)]
    val = n * (n + 1) // 2
    
    dy = [1, 0, -1]
    dx = [0, 1, -1]
    y = 0; x = 0; direction = 0
    for i in range(1, val+1):
        array[y][x] = i
        ny = y + dy[direction]
        nx = x + dx[direction]
        # 영역 범위 안이면서 아직 값을 채워넣지 않은 경우
        if (0 <= ny < n and 0 <= nx < n and not array[ny][nx]):
            y, x = ny, nx
        # if문 조건 외 → 방향 전환(↓ → ↖)
        else:
            direction = (direction + 1) % 3
            # 영역 가장자리 충돌 시 방향을 회전함과 동시에 위치를 한 칸 이동시켜줌
            y += dy[direction]     
            x += dx[direction]
    
    for i in array:
        for j in i:
            if j:
                answer.append(j)
    return answer

🔒문제 출처

프로그래머스 - 삼각 달팽이

0개의 댓글