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