본문 바로가기
프로그래밍/Algorithm

[프로그래머스 Programmers] 정수를 나선형으로 배치하기

by bantomak 2023. 12. 11.

문제 설명

양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.

 

제한 사항

  • 1 ≤ n ≤ 30

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

내가 풀이한 방법은 4 x 4의 배열은 1에서부터 12까지의 외곽선을 가진 2 x 2의 배열로 접근하였다.

5 x 5의 배열은 1에서부터 16까지의 외곽선을 가진 3 x 3의 배열이다. 이를 무한히 확장시켜 나간다.

 

풀이 코드

using System;

public class Solution {
    public int[,] solution(int n) {
        int[,] answer = new int[n,n];
        var count = 1;
        
        FillArray(0, 0, n, ref count, ref answer);
        
        return answer;
    }
    
    static void FillArray(int startX, int startY, int n, ref int value, ref int[,] array)
    {
        for (int i = startX; i < n; i++)
        {
            array[startX, i] = value++;
        }

        for (int i = startX + 1; i < n; i++)
        {
            array[i, n - 1] = value++;
        }

        for (int i = n - 2; startX <= i; i--)
        {
            array[n - 1 , i] = value++;
        }

        for (int i = n - 2; startX < i; i--)
        {
            array[i, startX] = value++;
        }

        if ((n - 2) + 1 >= 2)
        {
            FillArray(startX + 1, startY + 1, (n - 2) + 1, ref value, ref array);
        }
    }
}

 

 

함께 보면 좋은 글

아래의 알고리즘도 비슷한 방식으로 풀이를 진행했다.

 

 

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

문제 설명 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모

jettstream.tistory.com

댓글