https://school.programmers.co.kr/learn/courses/30/lessons/42748
문제 접근
배열은 0번 인덱스부터 시작하는 개념이라 처음엔 혼동이 오나 i, j, k의 값들을 2차원 배열에 사용하고, 잘라낸 배열 cutArray에 값을 넣어주면 쉽게 풀린다.
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
for(int i=0; i<commands.length; i++) {
int count = 0;
int[] cutArray = new int[commands[i][1]-commands[i][0]+1];
for(int j=commands[i][0]-1; j<commands[i][1]; j++) cutArray[count++] = array[j];
Arrays.sort(cutArray);
answer[i] = cutArray[commands[i][2]-1];
}
return answer;
}
}
다른 사람 풀이
다른 사람 풀이를 보니 배열을 잘라주는 기능이 있더라
Arrays.copyOf(원본 배열, 복사할 길이);
Arrays.copyOfRange(원본 배열, 복사 시작 인덱스, 복사 끝 인덱스); → (a, 0, 3)이면 a의 0번 인덱스 부터 2번 인덱스까지 자름
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
// Arrays.copyOf(원본 배열, 복사할 길이);
// Arrays.copyOfRange(원본 배열, 복사 시작 인덱스, 복사 끝 인덱스); → (a, 0, 3)이면 a의 0번 인덱스 부터 2번 인덱스까지 자름
for(int i=0; i<commands.length; i++){
int[] temp = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]); // 잘라낸 배열, commands[i][1]은 앞까지 자르기에 -1 안해줌
Arrays.sort(temp);
answer[i] = temp[commands[i][2]-1];
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / 실패율 / JAVA] (0) | 2023.03.15 |
---|---|
[프로그래머스 / 크레인 인형뽑기 게임 /JAVA] (0) | 2023.03.12 |
[프로그래머스 / 모의고사 / JAVA / 완전탐색] (1) | 2023.03.10 |
[프로그래머스 / 키패드 누르기 / JAVA] (0) | 2023.03.08 |
[프로그래머스 / 신규 아이디 추천 / JAVA / replaceAll()] (0) | 2023.03.07 |
댓글