새소식

알고리즘 문제풀이/프로그래머스

[프로그래머스(Programmers)] level 1 k번째수 정렬 문제 자바 풀이

  • -

안녕하세요 호호만두에요

이번에는 프로그래머스 level 1 k번째수 정렬 문제를 풀어보았어요

이 문제는 level 1 이기에 어렵지는 않아요

 

간단하게 이 문제는 배열을 인덱스로 잘라서 sorting 한 다음에 k번째 수를 구하는 문제에요

그래서 저는 문제 그대로 i부터 j까지 순회하며 값을 골라서 따로 배열에 넣었어요

그리고 sorting을 통해 k-1 번째 값은 return 해주는 방식으로 코딩했습니다.

 

https://github.com/wlgh325/Programmers_algorithm/tree/master/Level1/K%EB%B2%88%EC%A7%B8%EC%88%98

 

wlgh325/Programmers_algorithm

프로그래머스 알고리즘 자바 풀이. Contribute to wlgh325/Programmers_algorithm development by creating an account on GitHub.

github.com

 

 

<프로그래머스 k번째수 자바 풀이>

import java.util.Arrays;

class Solution{
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];

        // 자른 배열
        for (int i = 0; i < answer.length; i++) {
            int[] temp = new int[commands[i][1] - commands[i][0] + 1];

            for (int j = commands[i][0] - 1, k=0 ; j < commands[i][1]; j++, k++) {
                temp[k] = array[j];
            }
            // sorting
            Arrays.sort(temp);

            answer[i] = temp[commands[i][2] - 1];
        }
        
        return answer;
    }
}

저는 위 처럼 문제 그대로 풀었지만 알고보니까 더 쉽게 푸는 방법이 있더라구요

바로 배열을 범위로 자르는 Arrays.copyOfRange()에요

저는 이 문제를 보고 아 파이썬이면 진짜 간단할텐데 생각했는데

자바에도 이와 비슷한 메소드를 가지고 있는줄 처음 알았어요

이렇게 차근차근 level 1 부터 풀어가면서 하나씩 배워갑니다!!

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.