[프로그래머스 코딩테스트] 삼각 달팽이

gyeol·2025년 10월 15일

코딩테스트 공부

목록 보기
52/53
post-thumbnail

내 풀이

일단 문제 접근을 위해 new int[n][n] 2차원 배열을 생각한다.
각 2차원 배열에 반시계 방향으로 채워넣은 값들을 넣고, 이를 추후에 answer 배열에 넣어주는 방식으로 접근했다.

이렇게 총 3방향으로 나눌 수 있는데, 이 방향은 i 변수를 사용해서 각각 x, y 값을 수정해준다.

그리고 answer 배열의 총 길이는 주어진 예제를 보면 쉽게 공통점을 찾아 계산할 수 있는데, n*(n+1)/2 계산을 통해 손쉽게 길이를 구할 수 있다.

내 코드

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 num=1;
        
        
        for(int i=0; i<n; i++){
            for(int j=i; j<n; j++){
                if(i%3==0){
                    x++;
                }
                else if(i%3==1){
                    y++;
                }
                else if(i%3==2){
                    x--;
                    y--;
                }
                arr[x][y] = num++;
            }
        }
        
        int idx=0;
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                if(arr[i][j] == 0 ) break;
                answer[idx++] = arr[i][j];
            }
        }
        
        
        return answer;
    }
}
profile
공부 기록 공간 '◡'

0개의 댓글