본문 바로가기
코딩테스트

[리트코드] 215번 - Kth Largest Element in an Array

by 의정부핵꿀밤 2022. 7. 15.
728x90

https://leetcode.com/problems/kth-largest-element-in-an-array/

 

Kth Largest Element in an Array - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


이 문제는 그냥 k번쨰로 큰 원소를 배열에서 찾아서 반환하면 된다

근데 신경 쓸 제약 조건이라면 시간 복잡도를 O(n)으로 맞춰야한다는 정도?

 

그렇다는건 이중루프를 쓰면 안된다는 말이겠지?

 

사실 풀이가 너무 간단해서 약간 당황함

그냥 Arrays.sort 메소드 사용했어

 

주의할 점은 저 메소드로 정렬할 때 내림차순 하려면 파라미터로 Collections.reverseOrder()를 주면 되거든?

근데 이거 쓰려면 배열의 타입이 Object여야해

int 처럼 원시 타입이면 오류가 나더라구

 

그래서 Integer 배열로 바꾸는 로직 추가하고, 내림차순 정렬해서 k-1번째 인덱스 반환했어! (0부터 시작하니깐)

 

간단하지?ㅎㅎ

 

 

 

자바 코드)

public class leet215 {
    public int findKthLargest(int[] nums, int k) {
        Integer[] arr = new Integer[nums.length];
        for(int i=0;i<nums.length;i++) {
            arr[i] = nums[i];
        }
        Arrays.sort(arr, Collections.reverseOrder());
        return arr[k-1];
    }

    @Test
    public void test() {
        Assert.assertEquals(5, findKthLargest(new int[]{3,2,1,5,6,4}, 2));
        Assert.assertEquals(4, findKthLargest(new int[]{3,2,3,1,2,4,5,5,6}, 4));
    }
}

아웅 테스트코드 너무 좋당!!

왜 이걸 이제 했지~!~!

jUnit 최고야~~><

728x90

댓글