관리 메뉴

개발 쥬스

[프로그래머스/Java] 87390 n^2배열 자르기 본문

알고리즘

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

DevJuice 2024. 10. 23. 14:55
반응형

🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/87390

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

🔍  해결 과정

2차원 배열을 직접 만들어서 계산하지 않고 규칙에 따른 인덱스 값 도출을 통해 left 인덱스에서의 값부터 right 인덱까지의 값을 차례로 담는 방식으로 문제를 해결하였습니다. 규칙의 내용은 다음과 같습니다.

2차원 배열 크기를 n이라고 가정할 때
1️⃣ 특정 인덱스 i에서의 row 값: i / n + 1
2️⃣ 특정 인덱스 i에서의 col 값: i % n + 1
3️⃣ 1️⃣, 2️⃣ 번의 값들 중 최댓값을 리스트에 담는다.

 


✏️ 코드

import java.util.*;

class Solution {
    public List<Integer> solution(int n, long left, long right) {
        List<Integer> answer = new ArrayList<>();
        
        // 왼쪽 -> 오른쪽으로 가면서 값 갱신
        for (long i = left; i <= right; ++i) {
            long row = i / n + 1;
            long col = i % n + 1;
            
            answer.add((int) Math.max(row, col));
        }
        
        return answer;
    }
}
반응형