forked from SSAFY-5959-STUDY/Algorithm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PG68645.java
54 lines (49 loc) · 1.5 KB
/
PG68645.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class PG68645 {
public int[] solution(int n) {
int[] answer;
int[][] snail = new int[n][n];
int num = 1; // 배열에 저장될 숫자
int cnt = n; // 한번에 채울 숫자들의 개수
int i=0, j=0; // 삼각 달팽이 접근 인덱스
while(cnt > 0) {
// 위->아래
for(int c=0; c<cnt; c++) {
snail[i++][j] = num++;
}
// 시작점 셋팅 (왼->오 채우기)
i--;
j++;
cnt--;
if(cnt == 0) // 더 이상 채울 숫자가 남아있지 않다면
break;
// 왼->오
for(int c=0; c<cnt; c++) {
snail[i][j++] = num++;
}
// 시작점 셋팅 (아래->위 채우기)
i--;
j-=2;
cnt--;
if(cnt == 0)
break;
// 아래->위
for(int c=0; c<cnt; c++) {
snail[i--][j--] = num++;
}
// 시작점 셋팅 (위->아래 채우기)
i+=2;
j++;
cnt--;
if(cnt == 0)
break;
}
answer = new int[num-1]; // 저장된 숫자의 개수만큼 답 배열 생성
int len = 0;
for(int y=0; y<n; y++) {
for(int x=0; x<=y; x++) {
answer[len++] = snail[y][x];
}
}
return answer;
}
}