https://school.programmers.co.kr/learn/courses/30/lessons/68645
은근하게 어려웠다.
방향을 ↓ → ↖
이렇게 잡아야 하고
d = (d + 1) % 3으로 수정할 수 있는 거 까지는 쉽지만 반복문을 탈출하고 그 조건을 맞추는게 어려웠다.
또한, 정답의 배열을 담는 방법이 여러가지가 있는데,
import java.util.*;
class Solution {
public int[] solution(int n) {
int map[][] = new int[n][n];
int[] dx = {1, 0, -1};
int[] dy = {0, 1, -1};
int x = 0;
int y = 0;
int d = 0;
int v = 1;
while(true){
map[x][y] = v++;
int goX = x + dx[d];
int goY = y + dy[d];
if(goX < 0 || goY < 0 || goX >= n || goY >= n || map[goX][goY] != 0){
d = (d + 1) % 3;
goX = x + dx[d];
goY = y + dy[d];
if(goX < 0 || goY < 0 || goX >= n || goY >= n || map[goX][goY] != 0){
break;
}
}
x = goX;
y = goY;
}
ArrayList<Integer> answerList = new ArrayList<>();
for(int i = 0; i < n; i++){
for(int j = 0; j <= i; j++){
//answer[index] = map[i][j];
answerList.add(map[i][j]);
}
}
/*
int[] answer = new int[value - 1];
int index = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j <= i; j++){
answer[index++] = triangles[i][j];
}
}
*/
return answerList.stream().mapToInt(Integer::intValue).toArray();
}
}