반응형
정수를 나선형으로 배치하기
문제 설명
양의 정수 n
이 매개변수로 주어집니다. n
× n
배열에 1부터 n
^2 까지 정수를 인덱스 [0][0]
부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 <= n <= 30
입출력 예
아이디어
- 방향을 분류(상하좌우) 한다.
- 분류한 방향의 다음에 값이 있는지 체크, 방향 전환 처리 주의
풀이
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
int col = 0;
int row = 0;
// 방향 - e: 우, s: 하, w: 좌, n: 상
String direction = "e";
for (int i = 1; i <= n * n; i++) {
answer[row][col] = i;
if (direction.equals("e")) {
if (col == n - 1 || answer[row][col + 1] != 0) {
direction = "s";
row++;
} else {
col++;
}
} else if (direction.equals("s")) {
if (row == n - 1 || answer[row + 1][col] != 0) {
direction = "w";
col--;
} else {
row++;
}
} else if (direction.equals("w")) {
if (col == 0 || answer[row][col - 1] != 0) {
direction = "n";
row--;
} else {
col--;
}
} else if (direction.equals("n")) {
if (row == 0 || answer[row - 1][col] != 0) {
direction = "e";
col++;
} else {
row--;
}
}
}
return answer;
}
}
반응형
'알고리즘' 카테고리의 다른 글
[LEETCODE] 706. Design HashMap (1) | 2024.10.09 |
---|---|
[프로그래머스] - 숫자 변환하기 JAVA 풀이 (0) | 2024.10.08 |
[프로그래머스] PCCP 기출문제 - 붕대 감기 JAVA 풀이 (0) | 2024.10.04 |
[프로그래머스] PCCP 기출문제 - 동영상 재생기 JAVA 풀이 (0) | 2024.10.01 |
[BOJ-1641] 도서관 JAVA 풀이 (0) | 2024.09.30 |