Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
https://school.programmers.co.kr/learn/courses/30/lessons/42748?language=java
풀이
나의 풀이
- array 배열을 순회하면서 임시 배열을 정렬 시키고, K번째 수를 answer 배열에 저장하도록 풀이했다.
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
// 여러 개의 커맨드 중 하나의 커맨드마다 결과 값을 배열에 담아 반환하는 문제이다.
// array 배열을 순회하면서 임시 배열을 정렬 시키고 K번째 수를 answer 배열에 저장하도록 풀이했다.
int[] answer = new int[commands.length];
for(int i=0; i<answer.length; i++) {
int tempIndex = 0;
int start = commands[i][0];
int end = commands[i][1];
int K = commands[i][2];
int[] tempArr = new int[end-start+1];
for(int j=start-1; j<end; j++)
tempArr[tempIndex++] = array[j];
Arrays.sort(tempArr);
answer[i] = tempArr[K-1];
}
return answer;
}
}
다른 사람의 풀이
- 임시 배열을 만들긴 하는데 이미 구현되어 있는 copyOfRange() 메서드를 호출해 풀이했다.
- 가독성이 훨 좋아보인다.
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++){
// copyOfRange(배열, 시작점, 끝점) -> 반환 값 : [복사된 배열]
int[] temp = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
Arrays.sort(temp);
answer[i] = temp[commands[i][2]-1];
}
return answer;
}
}
'Dev > PS' 카테고리의 다른 글
[프로그래머스-코딩테스트 연습] H-Index (1) | 2023.12.08 |
---|---|
[프로그래머스-코딩테스트 연습] 가장 큰 수 (0) | 2023.12.07 |
[프로그래머스-코딩테스트 연습] 이중우선순위큐 (0) | 2023.12.07 |
[프로그래머스-코딩테스트 연습] 디스크 컨트롤러 (0) | 2023.12.07 |
[프로그래머스-코딩테스트 연습] 더 맵게 (2) | 2023.12.05 |