문제 설명
양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
제한 사항
- 1 ≤ n ≤ 30
내가 풀이한 방법은 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);
}
}
}
함께 보면 좋은 글
아래의 알고리즘도 비슷한 방식으로 풀이를 진행했다.
'프로그래밍 > Algorithm' 카테고리의 다른 글
[프로그래머스 Programmers] 모의고사 (1) | 2023.12.13 |
---|---|
지구 종말에 대한 하노이 예언 (0) | 2023.12.12 |
[프로그래머스 Programmers] 수 조작하기 (2) | 2023.12.05 |
O(N) vs O(2N)은 동일한 시간 복잡도를 갖는다. (1) | 2023.12.05 |
[프로그래머스 Programmers] 길이에 따른 연산 (1) | 2023.12.04 |
댓글