부엔 개발 까미노

kthLargestElement 본문

JS/알고리즘 연습

kthLargestElement

동행함 2020. 1. 16. 13:44

문제

  • 단, sort나 max 같이 JS 자체 정렬함수는 되도록 쓰지않고 구현해볼것.
/*
* Given an array of integers find the kth element
* in the sorted order (not the kth distinct element).
*
* So, if the array is [3, 1, 2, 1, 4] and k is 3 then the result is 2,
* because it’s the 3rd element in sorted order.
*
* kthLargestElement([1,2,6,4,5], 3); // 4
* kthLargestElement([-10,-25,-47,-36,0], 1)); // 0
*/

이해

  • 정수배열에서 k 번째로 큰 수를 반환하는 문제
  • <의사코드>
    1) max를 직접 구현을 해서 k-1번 최대수를 삭제한다.
    2) 그리고 나서 원하는 결과값인 k번째 최대수를 반환한다.

풀이

export default function kthLargestElement(arr, k) {
var Max;
if (k === 1) {
    Max = max(arr);
} else {

    while (k > 1) {
    k--;
    var index = arr.indexOf(max(arr));
    arr.splice(index, 1);
    }

    Max = max(arr);
    }

    function max(arr) {
    var max = -Infinity;
        for (var item of arr) {
            if (item > max) max = item;
        }
    return max;
    }

return Max;
}

배운것

  • 다른팀원의 방식 참고
    객체에 정수 key 값은 정렬이 되는 방식을 이용해서 sort함수없이 정렬할수있다 .
    //단 객체에 음의 키값을 넣을 수가 없다. 이는 따로 고려해서 짜야한다.

캔님 팁

  • 면접에 가서 알고리즘을 풀때는 바보같은 방법이라도 일단 풀어서 내자!! 백지 내지 말자!
  • premature optimization is root of evil !! : 나중에 기획이 변경될수있고 어떻게 진행될지 모르기때문에 너무 성급하게 결정하지 않는게 좋다는 이야기 ... 를 해주심
Comments