풀면서 그림을 그려봐야한다.
주어진 삼각형을 2차원 배열로 밀어넣으면, 직각삼각형 형태로 나온다.
그러면 예시로 주어진 n이 4인 정삼각형은 다음과 같이 그릴 수 있다.
주어진 그림에서 우리가 찾을 수 있는 규칙성은 다음과 같다.
고로, 위의 n이 4인 경우는 다음과 같이 나타낼 수 있다.
이 규칙성을 코드로 나타내면 다음과 같다.
import java.util.*;
class Solution {
public int[] solution(int n) {
int[][] matrix = new int[n][n];
int x = 0, y = 0;
int max = (n * (n + 1)) / 2;
int value = 1;
matrix[0][0] = 1;
while(value < max){
// move x
while (x + 1 < n && matrix[x + 1][y] == 0) {
matrix[++x][y] = ++value;
}
// move y
while (y + 1 < n && matrix[x][y + 1] == 0) {
matrix[x][++y] = ++value;
}
// move x-1, y-1
while (y - 1 > 0 && x - 1 > 0 && matrix[x - 1][y - 1] == 0) {
matrix[--x][--y] = ++value;
}
}
List<Integer> answer = new ArrayList<>();
for (int[] arr : matrix) {
for (int innerValue : arr) {
if (innerValue != 0) {
answer.add(innerValue);
}
}
}
return answer.stream().mapToInt(i -> i).toArray();
}
}