[프로그래머스] n^2 배열 자르기(Java, 자바)

giggle·2023년 8월 21일
0
post-custom-banner

문제

n^2 배열 자르기


📌 아이디어

해당 문제는 인덱스 계산을 활용해 문제를 해결했습니다.

문제를 해결하기 위한 핵심은 (x, y) 좌표에서 x, y 중 더 큰 값을 인덱스 요소로 정한다는 것입니다. 해당 원리를 이용한다면 손쉽게 2차원 배열을 만들 수 있습니다.

하지만, 전체 결과를 조회하는 것이 아닌 left와 right 사이를 탐색하는 것이기 때문에 탐색 구간 left와 right로 설정했습니다.

인덱스를 통해 행과 열을 구하는 방법은 다음과 같습니다.

long row = i / n + 1; // 행
long col = i % n + 1; // 열

📌 코드

import java.util.*;

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

✏️ TIP

1 . left와 right가 long 타입으로 주어지기 때문에 형 변환에 신경을 써야합니다.
2. Math.max를 활용하여 행과 열중 최대값을 도출했습니다.


피드백 및 개선점은 댓글을 통해 알려주세요😊

profile
배움을 글로 기록하는 개발자가 되겠습니다.
post-custom-banner

0개의 댓글