https://school.programmers.co.kr/learn/courses/30/lessons/68645
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 해결 과정
이 문제에서 찾은 규칙은 다음과 같다.
- 첫번째 삼각형에서 아래로 가는 이동 횟수는 n번, 그 다음 삼각형에서는 n-3번
- 첫번째 삼각형에서 오른쪽으로 이동 횟수는 n-1번, 그 다음 삼각형에서는 n-3-1번
- 첫번째 삼각형에서 대각선 위로 이동하는 횟수는 n-2번, 그 다음 삼각형에서는 n-3-2번
- 아래 -> 오른쪽 -> 대각선 위 순서로 이동 후 len-3
import java.util.*;
class Solution {
public int[] solution(int n) {
int[][] arr = new int[n][n];
int startX=0;
int startY=0;
int value=1;
int size=0;
int len=n;
while(len>0){
for(int i=0; i<len; i++){ //아래
arr[startX][startY]=value;
value++;
startX++;
size++;
if(i==len-1){startX--;}
}
for(int i=0; i<len-1; i++){ //오른쪽
startY++;
arr[startX][startY]=value;
size++;
value++;
}
for(int i=0; i<len-2; i++){ //대각선
startX--;
startY--;
arr[startX][startY]=value;
size++;
value++;
}
len=len-3;
startX++;
}
int[] answer = new int[size];
int index=0;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(arr[i][j]!=0){
answer[index]=arr[i][j];
index++;
}
}
}
return answer;
}
}