개발일기

[Programmers] 삼각 달팽이 자바 본문

Algorithm

[Programmers] 삼각 달팽이 자바

한둥둥 2024. 12. 19. 23:52
class Solution {
    public int[] solution(int n) {
        int v = 1;
        int x = 0;
        int y = 0;
        
        int[][] arr = new int[n][n];
        
        while(true) {
            // 아래로 이동
            while(true) {
                arr[y][x] = v++;
                if(y+1==n || arr[y+1][x] != 0) {
                   break;
                }
                y+=1;
            }
            
            if(x+1 == n || arr[y][x+1] != 0) {
                break;
            }
            
            x+=1;
            while(true) {
                arr[y][x] = v++;
                if(x+1 == n || arr[y][x+1] != 0) {
                    break;
                }
                x+=1;                
            }
            
            if(arr[y-1][x-1] != 0) {
                break;
            }
            
            x-=1;
            y-=1;
            
            while(true) {
                arr[y][x] = v++;
                if(arr[y-1][x-1] != 0) {
                    break;
                }
                x-=1;
                y-=1;
            }
            
            if(y+1 == n || arr[y+1][x] != 0) {
                break;
            }
            y+=1;
        }
        
        int[] result = new int[v - 1];
        int index = 0;
        for(int i=0; i<n; i++) {
            for(int j=0; j <= i; j++) {
                result[index++] = arr[i][j];
            }
        }
        
        return result;
    }
}

 

while 문을 통해서 -> 아래 오른쪽 대각선 움직이도록 만들어주었다. 

그 후에 중간 중간들어있는 if문은 이동후에 다음 방향이동에 이미 0이 아닌 숫자가 있는 경우 이미 방문하여 전부 처리 한 것이기에 break를 통해서 나갈 수 있도록 선언해주었다.