Algorithm & Data Structures/Programers
Lv 2. 삼각달팽이
Geisha
2024. 7. 31. 14:45
코드 흐름
- 위 문제의 규칙은 n각형을 만들때 n번의 반복문을 돈다는 것이다.
- n이 3인 삼각형이면 123,45,6 으로 3번
- n이 4인 삼각형이면 1234,567,89,10 으로 4번
- n이 5인 삼각형이면 12345,6789,101112,1314,15로 5번
- 즉 for문을 2번돌고 갯수를 줄여나가면 2차원배열에
- 1 1 1
- 26 2 10 2 12
- 345 3 8 9 3 13 11
- 4 5 6 7 4 14 15 10
- 5 6 7 8 9
- 와 같이 저장된다.
- 이를 ArrayList에 담아 return하였다.
import java.util.*;
class Solution {
public ArrayList<Integer> solution(int n) {
ArrayList<Integer> answer = new ArrayList<>();
int[][] map = new int[n][n];
int x = -1, y = 0, c = 1;
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < n - i ; j++){
if(i%3==0)
x+=1;
else if(i%3==1)
y+=1;
else{
x-=1;
y-=1;
}
map[x][y]=c;
c++;
}
}
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < n ; j++){
if(map[i][j]!=0)
answer.add(map[i][j]);
else
break;
}
}
return answer;
}
}