Scroll indicator done
728x90

문제 링크

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

 

프로그래머스

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

programmers.co.kr


조건

제한사항

  • array의 길이는 1 이상 100 이하입니다.
  • array의 각 원소는 1 이상 100 이하입니다.
  • commands의 길이는 1 이상 50 이하입니다.
  • commands의 각 원소는 길이가 3입니다.

 

알고리즘 

Arrays.copyOfRange : array 배열을 원하는 범위만큼만 복사

 

전체 코드

package com.example.javaproject3.psstudy;

import java.lang.reflect.Array;
import java.util.*;

public class Solution42748 {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        for (int i = 0; i < commands.length; i++)  // commands 길이 만큼 반복
            answer[i] = cutArray(array, commands[i]); // answer에 해당 command 에 대한 연산을 적용했을 때의 결과를 담아줌
        return answer;
    }

    public int cutArray(int[] array, int[] command) {  // 배열 잘라서 k 번째 있는 수를 리턴해주는 메소드
//        List<Integer> list = new ArrayList<>();
//        for (int i = command[0] - 1; i < command[1]; i++)
//            list.add(array[i]);
//        Collections.sort(list);
        int[] arr = Arrays.copyOfRange(array, command[0] - 1, command[1]);  // array 배열을 원하는 범위만큼만 복사하여 arr 에 저장
        Arrays.sort(arr);  // arr 정렬
        return arr[command[2] - 1];  // 배열에서 k 번째 수 리턴
    }

    public static void main(String[] args) {
        Solution42748 solution42748 = new Solution42748();
        System.out.println(Arrays.toString(solution42748.solution(new int[]{1, 5, 2, 6, 3, 7, 4}, new int[][]{{2, 5, 3}, {4, 4, 1}, {1, 7, 3}})));
    }
}

 

728x90