문제 설명
양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ n ≤ 30
입출력 예
n | result |
4 | [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] |
5 | [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]] |
풀이
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
int num = 1; // 시작값
int rowStart = 0; // 행 시작 번호
int rowEnd = n - 1; // 행 끝 번호
int colStart = 0; // 열 시작 번호
int colEnd = n - 1; // 열 끝 번호
while(num <= n * n) {
// 왼쪽 -> 오른쪽
for(int i=colStart; i<=colEnd; i++) {
answer[rowStart][i] = num++;
}
rowStart++;
// 위 -> 아래
for(int i=rowStart; i<=rowEnd; i++) {
answer[i][colEnd] = num++;
}
colEnd--;
// 오른쪽 -> 왼쪽
for(int i=colEnd; i>=colStart; i--) {
answer[rowEnd][i] = num++;
}
rowEnd--;
// 아래 -> 위
for(int i=rowEnd; i>=rowStart; i--) {
answer[i][colStart] = num++;
}
colStart++;
}
return answer;
}
}
'Coding Test > 프로그래머스[JAVA]' 카테고리의 다른 글
[프로그래머스 Lv0.] 340204번 [PCCE 기출문제] 4번 / 병과분류 (JAVA) (0) | 2024.11.12 |
---|---|
[프로그래머스 Lv0.] 250132번 [PCCE 기출문제] 2번 / 피타고라스의 정리 (JAVA) (0) | 2024.11.12 |
[프로그래머스 Lv0.] 181921번 배열 만들기 2 (JAVA) (0) | 2024.11.05 |
[프로그래머스 Lv0.] 181916번 주사위 게임 3 (JAVA) (0) | 2024.11.04 |
[프로그래머스 Lv0.] 181893번 배열 조각하기 (JAVA) (0) | 2024.11.04 |