class Solution {
public int[] solution(int n) {
int[] answer = new int[n*(n+1)/2];
int[][] arr = new int[n][n];
int x = -1;
int y = 0;
int len = n;
int value = 1;
int index = 0;
while(true) {
//down
for(int i=0; i<len; i++) { arr[x+1+i][y] = value++; }
x += len;
len--;
if(len==0) { break; }
//right
for(int i=0; i<len; i++) { arr[x][y+1+i] = value++; }
y += len;
len--;
if(len==0) { break; }
//diagonal
for(int i=0; i<len; i++) { arr[x-1-i][y-1-i] = value++; }
x -= len;
y -= len;
len--;
if(len==0) { break; }
}
for(int i=0; i<n; i++) {
for(int j=0; j<=i; j++) { answer[index++] = arr[i][j]; }
}
return answer;
}
}
'Problem Solving > Programmers' 카테고리의 다른 글
[Level 2] 주식가격 (0) | 2022.04.06 |
---|---|
[Level 2] 영어 끝말잇기 (0) | 2022.04.06 |
[Level 2] 2개 이하로 다른 비트 (0) | 2022.04.06 |
[Level 2] 피로도 (0) | 2022.04.06 |
[Level 2] 큰 수 만들기 (0) | 2022.04.06 |