코딩테스트/프로그래머스

[프로그래머스] n^2 배열 자르기 (Lv.2)

34suuuuu 2025. 3. 27. 10:53

✴️ 문제

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

 

✴️ 문제 풀이

 

2차원 배열을 따로 만들어주지 않고도 탐색이 가능하다. 

n x n 배열일 때, ( i / n ) + 1은 행이 되고, ( i % n ) + 1은 열이 된다.

그리고 해당 인덱스의 값은 행과 열 중 큰 값을 가지게 된다. 

int row = (int)(i/n) + 1;	// 행
int col = (int)(i%n) + 1;	// 열

 

answer[idx++] = Math.max(row,col);

 

이 문제에서 주의해야하는 부분은 left와 right값이 int가 아닌 long으로 주어진다는 점? 정도인 것 같다

형변환이 필요한 문제였다

✴️ 전체 코드 (Java)

import java.util.*;

class Solution {
    public int[] solution(int n, long left, long right) {
        int[] answer = new int[(int) right - (int)left  + 1];
        int idx = 0;
        
        for(long i=left; i<=right; i++){
            int row = (int)(i/n) + 1;	// 행
            int col = (int)(i%n) + 1;	// 열
            
            answer[idx++] = Math.max(row,col);
        }
        return answer;
    }
}