티스토리 뷰

문제

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

 

프로그래머스

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

programmers.co.kr

언어

자바 Java

로직

어려운 문제가 아니기 때문에 배열을 자르는 방법만 소개하겠습니다.

배열 자르기

주어진 int형 배열을 원하는 개수만큼 자르기 위해서는 내장 메서드를 사용하면 됩니다. Arrays 클래스의 copyOfRange 메서드를 사용하면 쉽게 원하는 개수만큼 자를 수 있습니다.

 

arr 배열의 요소 중에서 2, 3, 4를 꺼내봅시다. 요소 2의 인덱스는 1이고 요소 4의 인덱스는 3입니다. Arrays.copyOfRange()는 다음과 같이 정의되어 있습니다.

Arrays.copyOfRange(배열, 시작 인덱스, 마지막 인덱스 + 1)

주의해야 할 점은 요소 4의 인덱스가 3이지만 + 1을 하여 넘겨주어야 합니다.

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};

        int i = 1;
        int j = 3;

        int[] slice = Arrays.copyOfRange(arr, i, j + 1);

        System.out.println(Arrays.toString(slice));
    }
}

출력
[2, 3, 4]

코드

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int[] solution(int[] array, int[][] commands) {
        List<Integer> result = new ArrayList<>();

        for (int[] command : commands) {
            int i = command[0];
            int j = command[1];
            int k = command[2];

            int[] sliceArr = Arrays.copyOfRange(array, i - 1, j);
            Arrays.sort(sliceArr);

            result.add(sliceArr[k - 1]);
        }

        return result.stream().mapToInt(Integer::valueOf).toArray();
    }
}
Total
Today
Yesterday
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30