728x90
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42748
📌 문제 개요
배열의 특정 구간을 잘라낸 뒤 정렬하고,
그 중 k번째 숫자를 구하는 문제
[1, 5, 2, 6, 3, 7, 4]
2~5까지 자르기
→ [5, 2, 6, 3]
정렬
→ [2, 3, 5, 6]
3번째 숫자
→ 5
commands에 있는 모든 명령을 수행한 결과를 배열로 반환하면 됩니다.
📌 접근 방법
각 command마다 순서로 처리
- 시작 인덱스와 끝 인덱스 구하기
- 배열 자르기
- 정렬하기
- k번째 값 저장하기
배열 자르기는 Arrays.copyOfRange()를 사용하면 쉽게 해결할 수 있습니다.
📌 핵심 아이디어
Arrays.copyOfRange()
Arrays.copyOfRange(array, start, end)
- start 포함
- end 미포함
Arrays.copyOfRange(array, 1, 5)
1 ~ 4 인덱스까지 복사
문제는 1번부터 시작하는 인덱스이므로 처리가 필요
start = i - 1
📌 전체 코드
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 start = commands[i][0] - 1;
int end = commands[i][1];
int k = commands[i][2] - 1;
int[] temp = Arrays.copyOfRange(array, start, end);
Arrays.sort(temp);
answer[i] = temp[k];
}
return answer;
}
}
📄 정리
- 배열 자르기는 Arrays.copyOfRange()
- 정렬은 Arrays.sort()
- 문제 인덱스는 1-based
- copyOfRange의 끝 인덱스는 포함되지 않음
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 카드 뭉치 JAVA 풀이 (구현, 문자열) (0) | 2026.06.03 |
|---|---|
| 프로그래머스 숫자 문자열과 영단어 JAVA 풀이 (문자열, replace) (0) | 2026.06.02 |
| 프로그래머스 푸드 파이트 대회 JAVA 풀이 (0) | 2026.05.27 |
| 프로그래머스 두 개 뽑아서 더하기 (JAVA) (0) | 2026.05.26 |
| 프로그래머스 시저 암호 JAVA (문자열, 구현, 아스키코드) (0) | 2026.05.25 |