yesolje
프로그래머스_고득점kit_정렬_K번째 수 본문
풀이
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = {};
answer = new int[commands.length];
for(int x = 0 ; x < commands.length ; x ++){
int cutStart = commands[x][0];
int cutEnd = commands[x][1];
int point = commands[x][2];
int[] copyArray = Arrays.copyOfRange(array,cutStart-1,cutEnd);
for(int i = 0 ; i < copyArray.length ; i++){
for(int j = 0 ; j < copyArray.length ; j++){
if(j > 0 && copyArray[j] < copyArray[j-1]){
int temp = copyArray[j-1];
copyArray[j-1] = copyArray[j];
copyArray[j] = temp;
}
}
}
answer[x] = copyArray[point-1];
}
return answer;
}
}
개념정리
❓Java 배열 자르기 메소드
| Arrays.copyOfRange(array,cutStart,cutEnd); | array : 자르는 대상 배열 cutStart : 자르기 시작하는 인덱스 cutEnd : 자르기를 마치는 인덱스 |
❓버블 정렬
✔️ 인접한 두 개의 값을 비교하여 더 작은 값을 이동시키는 방식
✔️ 한번의 반복이 끝날 때마다 가장 큰 값이 맨 뒤로 정렬됨
✔️ O( n² )의 시간 복잡도를 가지며, 작은 데이터셋에서는 괜찮지만, 큰 데이터에서는 비효율적

for(int i = 0 ; i < copyArray.length - 1 ; i++){ // i가 증가할수록 정렬된 부분을 제외
for(int j = 1 ; j < copyArray.length - i ; j++){ // 가장 큰 값을 뒤로 밀어냄
if(copyArray[j] < copyArray[j-1]){
int temp = copyArray[j-1];
copyArray[j-1] = copyArray[j];
copyArray[j] = temp;
}
}
}'코딩테스트' 카테고리의 다른 글
| 프로그래머스_고득점kit_완전탐색_모의고사 (0) | 2025.03.07 |
|---|---|
| 프로그래머스_고득점kit_완전탐색_최소직사각형 (0) | 2025.03.07 |
| 프로그래머스_고득점kit_스택큐_같은 숫자는 싫어 (0) | 2025.03.06 |
| 프로그래머스_고득점kit_해시_완주하지 못한 선수 (1) | 2025.02.24 |
| 프로그래머스_고득점kit_해시_폰켓몬 (0) | 2025.02.24 |