Algorithm
[Programmers] 삼각 달팽이 자바
한둥둥
2024. 12. 19. 23:52
class Solution {
public int[] solution(int n) {
int v = 1;
int x = 0;
int y = 0;
int[][] arr = new int[n][n];
while(true) {
// 아래로 이동
while(true) {
arr[y][x] = v++;
if(y+1==n || arr[y+1][x] != 0) {
break;
}
y+=1;
}
if(x+1 == n || arr[y][x+1] != 0) {
break;
}
x+=1;
while(true) {
arr[y][x] = v++;
if(x+1 == n || arr[y][x+1] != 0) {
break;
}
x+=1;
}
if(arr[y-1][x-1] != 0) {
break;
}
x-=1;
y-=1;
while(true) {
arr[y][x] = v++;
if(arr[y-1][x-1] != 0) {
break;
}
x-=1;
y-=1;
}
if(y+1 == n || arr[y+1][x] != 0) {
break;
}
y+=1;
}
int[] result = new int[v - 1];
int index = 0;
for(int i=0; i<n; i++) {
for(int j=0; j <= i; j++) {
result[index++] = arr[i][j];
}
}
return result;
}
}
while 문을 통해서 -> 아래 오른쪽 대각선 움직이도록 만들어주었다.
그 후에 중간 중간들어있는 if문은 이동후에 다음 방향이동에 이미 0이 아닌 숫자가 있는 경우 이미 방문하여 전부 처리 한 것이기에 break를 통해서 나갈 수 있도록 선언해주었다.