Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

yesolje

프로그래머스_고득점kit_정렬_K번째 수 본문

코딩테스트

프로그래머스_고득점kit_정렬_K번째 수

yesolje 2025. 3. 6. 12:00

풀이

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;
        }
    }
}