카테고리 없음

프로그래머스 - 삼각 달팽이[Java]

연향동큰손 2025. 8. 18. 23:59

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;
    }
    
    
}