728x90
반응형
문제 설명
양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n^2 까지 정수를 인덱스 [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]]
입출력 설명
입출력 예 #1
예제 1번의 n의 값은 4로 4 × 4 배열에 다음과 같이 1부터 16까지 숫자를 채울 수 있습니다.
행 \ 열 0 1 2 3
0 1 2 3 4
1 12 13 14 5
2 11 16 15 6
3 10 9 8 7
따라서 [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]를 return 합니다.
입출력 예 #2
예제 2번의 n의 값은 5로 5 × 5 배열에 다음과 같이 1부터 25까지 숫자를 채울 수 있습니다.
행 \ 열 0 1 2 3 4
0 1 2 3 4 5
1 16 17 18 19 6
2 15 24 25 20 7
3 14 23 22 21 8
4 13 12 11 10 9
따라서 [[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]]를 return 합니다.
내 풀이
Java
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
int num = 1;
int rowS = 0;
int rowE = n - 1;
int colS = 0;
int colE = n - 1;
while(num <= n * n){
for(int i = colS; i <= colE; i++){
answer[rowS][i] = num++;
}
rowS++;
for(int i = rowS; i <= rowE; i++){
answer[i][colE] = num++;
}
colE--;
for(int i = colE; i >= colS; i--){
answer[rowE][i] = num++;
}
rowE--;
for(int i = rowE; i >= rowS; i--){
answer[i][colS] = num++;
}
colS++;
}
return answer;
}
}
Python
def solution(n):
answer = [[0 for i in range(n)] for j in range(n)]
num = 1
rs, re, cs, ce = 0, n - 1, 0, n - 1;
while(num <= n * n):
for i in range(cs, ce + 1):
answer[rs][i] = num
num += 1
rs += 1
for i in range(rs, re + 1):
answer[i][ce] = num
num += 1
ce -= 1
for i in range(ce, cs - 1, -1):
answer[re][i] = num
num += 1
re -= 1
for i in range(re, rs - 1, -1):
answer[i][cs] = num
num += 1
cs += 1
return answer
https://school.programmers.co.kr/learn/courses/30/lessons/181832
728x90
반응형
'코딩테스트 > 프로그래머스 기초' 카테고리의 다른 글
[코딩테스트 Lv.0] l로 만들기 (0) | 2024.05.22 |
---|---|
[코딩테스트 Lv.0] 특별한 이차원 배열 1 (0) | 2024.05.22 |
[코딩테스트 Lv.0] 특별한 이차원 배열 2 (0) | 2024.05.06 |
[코딩테스트 Lv.0] 정사각형으로 만들기 (0) | 2024.05.05 |
[코딩테스트 Lv.0] 이차원 배열 대각선 순회하기 (0) | 2024.04.30 |