Geisha 2024. 7. 31. 14:45

 

코드 흐름

  •  위 문제의 규칙은 n각형을 만들때 n번의 반복문을 돈다는 것이다.
  • n이 3인 삼각형이면 123,45,6 으로 3번
  • n이 4인 삼각형이면 1234,567,89,10 으로 4번
  • n이 5인 삼각형이면 12345,6789,101112,1314,15로 5번
  • 즉 for문을 2번돌고 갯수를 줄여나가면 2차원배열에
  • 1         1                    1
  • 26       2   10             2   12
  • 345     3   8   9          3   13  11
  •            4   5   6   7     4   14  15 10
  •                                  5   6     7   8   9
  • 와 같이 저장된다.
  • 이를 ArrayList에 담아 return하였다.
import java.util.*;

class Solution {
    public ArrayList<Integer> solution(int n) {
        ArrayList<Integer> answer = new ArrayList<>();
        int[][] map = new int[n][n];
        int x = -1, y = 0, c = 1;
        for(int i = 0 ; i < n ; i++){
            for(int j = 0 ; j < n - i ; j++){
                if(i%3==0)
                    x+=1;
                else if(i%3==1)
                    y+=1;
                else{
                    x-=1;
                    y-=1;
                }
                map[x][y]=c;
                c++;
            }
        }
        for(int i = 0 ; i < n ; i++){
            for(int j = 0 ; j < n ; j++){
                if(map[i][j]!=0)
                    answer.add(map[i][j]);
                else
                    break;
            }    
        }
        return answer;
    }
}