구현
1. len에 삼각형에 들어갈 숫자의 개수를 구한다. 변의 길이가 주어졌을 때, 1부터 변의 길이 n까지의 합이 정답이었다.
2. triagle, x, y등을 초기화한다.
3. dx, dy를 통해 이동방향을 미리 저장하여 초기화한다. (아래, 오른쪽, 북서방향)
4. len의 개수 길이 만큼 아래를 과정을 반복한다.
class Solution {
public int[] solution(int n) {
int len = n * (n + 1) /2;
int[] answer = new int[len];
int[][] triagle = new int[n][n];
int x = 0;
int y = 0;
int[] dx = new int[] {1, 0, -1};
int[] dy = new int[] {0, 1, -1};
int d = 0;
for (int i = 1; i <= len; i++){
triagle[x][y] = i;
int testX = x + dx[d];
int testY = y + dy[d];
if (0 <= testX && testX < n && 0 <= testY && testY < testX + 1
&& triagle[testX][testY] == 0) {
x = testX;
y = testY;
} else {
d = (d + 1) % 3;
x += dx[d];
y += dy[d];
}
}
int idx = 0;
for (int i = 0; i < n; i++) {
for (int j = 0 ; j < i + 1; j++) {
answer[idx++] = triagle[i][j];
}
}
return answer;
}
}