-
문제
해당 문제는 배열이 주어졌을 때 x번째에서 y번째 만큼 가져와서 정렬한 뒤 z번째 큰 수를 출력하는 문제다.
조건
- array의 길이는 1 이상 100 이하입니다.
- array의 각 원소는 1 이상 100 이하입니다.
- commands의 길이는 1 이상 50 이하입니다.
- commands의 각 원소는 길이가 3입니다.
풀이
해당 문제는 Arrays를 이용해서 쉽게 해결했다. Arrays에 copyOfRange를 이용하면 배열을 카피할 수 있고 시작과 끝 인덱스를 지정해주면 해당 범위의 배열 값을 가져올 수 있다.
이후 배열을 카피한 다음 정렬을 해주고 z번째 값을 가져와 저장해주면 된다.
코드
import java.util.Arrays; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for (int i = 0; i < commands.length; i++) { int[] copy = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]); // 특정위치의 배열 값을 카피 Arrays.sort(copy); // 배열 정렬 answer[i] = copy[commands[i][2] -1]; // 몇 번째 값을 저장함. } return answer; } }
728x90'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 모의고사 JAVA (0) 2022.03.09 프로그래머스 가장 큰 수 JAVA (0) 2022.03.08 프로그래머스 기능개발 JAVA (0) 2022.03.02 프로그래머스 로또의 최고 순위와 최저 순위 JAVA (0) 2022.02.13 프로그래머스 해시 완주하지 못한 선수 JAVA (0) 2021.10.31 댓글