코테/프로그래머스

[프로그래머스] n^2 배열 자르기 - java

tony1724 2025. 5. 6. 14:48

문제 설명 :

https://school.programmers.co.kr/learn/courses/30/lessons/87390

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 요약 :

  1. n*n 이차원 배열에 대해 증가하는 테두리에 n 숫자로 채우는 배열 생성
  2. 행 단위로 잘라내어 1차원 배열 제작
  3. left부터 right까지 잘라서 새로운 배열 반환

 

 

문제 풀이 시간 : 30분

문제 성공 여부 : 성공

 

접근 방법(성공) :

1 2 3 4 5
2 2 3 4 5
3 3 3 4 5
4 4 4 4 5
5 5 5 5 5
  1. 위와 같은 배열 구조가 이어지는데, 특징을 하나 찾을 수 있다.
  2. 바로 i번째 행보다 작거나 같은 열은 모두 i+1의 수를 가진다
  3. 또한 i번째 행보다 큰 열은 모두 열+1의 수를 가진다

 

전체 코드(성공) :

class Solution {
    public int[] solution(int n, long left, long right) {
        int len = (int)(right-left);
        int[] ans = new int[len+1];
        int idx = 0;
        
        for(long i=left; i<=right; i++){
            int row = (int)(i / n);
            int col = (int)(i % n);
            int num = 0;
            
            if(col <= row) num = row+1;
            else num = col+1;
            ans[idx++] = num;
        }
        
        return ans;
    }
}