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

이은정·2024년 11월 24일

프로그래머스/Java

목록 보기
58/74

문제

풀이

결론부터 말하자면 left부터 right의 인덱스까지의 값을 배열로 출력하는 문제다.
먼저 left와 right 사이의 수들이 각각 어느 행과 열을 가지는지 먼저 알아낸 후에 각 행과 열이 가지는 값들을 알아내면 된다.

left와 right 사이의 수들을 순서대로 조회하고 이들을 idx라고 하자.
(idx/n)은 행(row)가 된다.
(idx%n)은 열(col)이 된다.

다음으로는 각 행과 열이 어느 값을 가지고 있는지에 대해 구해야 한다.
행과 열의 각각의 index 중의 최댓값에 1을 더하면 그것이 해당 행과 열의 수가 된다.

코드

import java.util.*;

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

결과

느낀 점

문제 자체는 어떻게 행과 열을 구하고, 그 안의 값을 어떻게 구하는지만 파악한다면 정말 쉬운 문제라고 생각한다.
다만 주어진 수들의 타입은 모두 long인데 결과는 int로 내야 해서 그게 귀찮았다.

profile
돈 많은 백수가 꿈인 백엔드 개발자 지망생

0개의 댓글