Archives
Recent Posts
«   2025/02   »
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
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[프로그래머스] K번째 수(Lvl.1) - Java 본문

코딩테스트

[프로그래머스] K번째 수(Lvl.1) - Java

Wise-99 2023. 5. 7. 00:40
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

나의 풀이

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 temp[] = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
            Arrays.sort(temp);
            answer[i] = temp[commands[i][2]-1];
        }
        return answer;
    }
}

Arrays.copyOfRange(원본 배열명, 복사 시작할 인덱스, 복사 끝 인덱스)

: 원본 배열에 대하여 복사 시작할 인덱스부터 복사 끝 인덱스까지 복사 후 붙여넣음. 값에 의한 복사이므로 복사한 배열의 값을 바꿔도 원본 배열에는 영향을 미치지 않음.

commands[i][0]-1 인 이유?

: commands 배열 값들이 1부터 시작하기 때문. -1을 해주지 않으면 실제 배열의 인덱스+1 이 되어버림.

예) array[1, 5, 2, 6, 3, 7, 4] 의 2번째부터 5번째 숫자까지를 복사하려면 실제 배열의 인덱스는 1~4가 됨. 즉 -1을 안해주면 [2,6,3,7]가 됨. 문제가 원하는 배열은 [5,2,6,3]임.

Arrays.sort(배열명)

: 배열을 오름차순 정렬하는 메소드.

 

내림차순으로 정렬하려면 Arrays.sort(배열명, Collections.reverseOrder())

또는 람다식으로 Arrays.sort(arr, (i1, i2) -> i2 - i1)