Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프론트앤드공부
- 라인하이트
- NthLargestNumber
- 문자열 순서 변경
- css
- 티스토리코드블럭
- 가운데정렬
- 상속
- 벌티컬라인
- 컴퓨터세팅
- 노마드모멘텀클로닝
- Til
- highlight.js
- 마진병합
- html태그
- 방향성고민
- js기초
- GIT
- JS #DOM #todolist
- 네거티브 마진
- 리딩영역
- slack
- 오버플로우
- z-index
- float
- 접근오류
- 코드블럭디자인
- clear
- 알고리즘연습
- 코딩연습
Archives
- Today
- Total
부엔 개발 까미노
kthLargestElement 본문
문제
- 단, 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