⚡문제정보
명예의 전당에서 꼴찌인 사람의 점수를 리턴하면 되는 문제입니다.
명예의 전당은 k명만큼 들어갈 수 있고
점수가 낮은 사람은 명예의 전당에서 밀려나는 구조로 되어있네요
🔍접근방법
항상 명예의 전당의 순위를 최신화해서 k등인 사람의 점수를 찾아야한다고 생각했습니다.
또한 그날그날 새로운 사람이 들어오니까 새로운 사람이 들어온것을 기준으로 최신화해야하니
스택구조로 문제를 풀었습니다.
아쉬운 점은 순위를 최신화하는 과정에서 매번 sort()를 사용해야하다보니
효율이 안좋아지는 문제가 있었습니다.
sort()를 사용하지않고도 문제를 풀 방법을 고려해봐야할 것 같네요
🔍나의 풀이
function solution(k, score) {
let answer = []
let stack = []
for(i = 0 ; i < score.length ; i++) {
stack.push(score[i])
stack.sort((a,b) => b-a)
let slicer = stack.slice(0,k)
answer.push(slicer[slicer.length-1] )
}
return answer
}
코드 설명은 아래에 적어뒀습니다.
function solution(k, score) {
let answer = []
//정답을 저장할 배열
let stack = []
//스택해줄 배열
for(i = 0 ; i < score.length ; i++) {
stack.push(score[i])
//스택에 score[i]를 넣어줌
stack.sort((a,b) => b-a)
//내림차순으로 정렬해서 순위를 매김
let slicer = stack.slice(0,k)
//1등부터 k등까지만 담긴 배열을 만듬
answer.push(slicer[slicer.length-1])
//answer에 k등인 사람을 push해줌
}
return answer
}
반응형
'programmers' 카테고리의 다른 글
[Programmers Level 0] OX 퀴즈 Javascript (0) | 2022.12.14 |
---|---|
[Programmers Level 1] 푸드파이트 대회 Javascript (0) | 2022.12.14 |
[Programmers Level 0] 등수 매기기 Javascript (0) | 2022.12.14 |
[Programmers Level 0] 분수의 덧셈 Javascript (0) | 2022.12.13 |
[Programmers Level 1] 두개 뽑아서 더하기 Javascript (0) | 2022.12.13 |