티스토리 뷰
2022.11.28
프로그래머스 스쿨 Lv01. 명예의 전당(1)
🚀 문제 파악
*명예의 전당에는 총 k명의 가수만 들어갈 수 있다
*첫 날부터 마지막날까지 출연한 가수의 점수는 순서대로 socre배열에 저장되어 전달한다
*명예의 전당에 오른 가수의 점수 중, 최하점은 매일 공개된다
*명예의 전당의 최하점은 answer배열에 저장되어 return한다
테스트케이스를 통해 문제에 대해 다시 한번 알아보면
k | score |
3 | [10, 100, 20, 150, 1, 100, 200] |
*k=3 명예의 전당에는 최고점 3명의 가수만이 들어갈 수 있다
*k일차까지는 명예의 전당이 꽉 차있지 않으므로, 1일차~k일차의 가수는 무조건 명예의 전당에 오른다
*이후에는 최고점 3명의 가수만이 명예의 전당에 오른다
n일차 | n일차 가수의 점수 (score) | 명예의 전당 (award) |
최하점 | ||
1 | [10, 100, 20, 150, 1, 100, 200] | 10 | - | - | 10 |
2 | [10, 100, 20, 150, 1, 100, 200] | 100 | 10 | - | 10 |
3 | [10, 100, 20, 150, 1, 100, 200] | 100 | 20 | 10 | 10 |
4 | [10, 100, 20, 150, 1, 100, 200] | 150 | 100 | 20 | 20 |
5 | [10, 100, 20, 150, 1, 100, 200] | 150 | 100 | 20 | 20 |
6 | [10, 100, 20, 150, 1, 100, 200] | 150 | 100 | 100 | 100 |
7 | [10, 100, 20, 150, 1, 100, 200] | 200 | 150 | 100 | 100 |
*그동안의 최하점은 answer 배열에 저장되어 return된다
* answer = [ 10, 10, 10, 20, 20, 100, 100 ]
🚀 문제 해결(1) push 전 비교 / 통과
1. 명예의 전당에 해당하는 배열 award를 만든다
2. award.length가 k일때까지는 무조건 awrad에 점수를 push한다
3. award.length가 k와 같다면, 최하점과 비교한다
*award의 최하점보다 점수가 높다면 최하점은 pop하고, 점수는 push한다
4. award를 내림차순 정렬한다
5. award의 최하점을 answer에 push한다
function solution(k, score) {
var answer = [];
var award = [];
for(var s of score){
if(award.length < k){
award.push(s);
}else{
if(s>award[k-1]){
award.pop();
award.push(s);
}
}
award.sort((a,b)=>b-a);
answer.push(award[award.length-1]);
}
return answer;
}
🚀 문제 해결(2) push 후 비교 / 통과
1. 명예의 전당에 해당하는 배열 award를 만든다
2. score의 값을 하나씩 꺼내어 award에 push한다
3. socre를 내림차순 정렬한다
4. award의 길이가 k+1이라면 가장 마지막 요소를 pop한다
*이미 정렬했으므로, 가장 마지막 요소가 명예의 전당에 남아 있을 수 없는 점수
5. 명예의 전당의 최하점을 answer에 push한다
function solution(k, score) {
var answer = [];
var award = [];
for(var s of score){
award.push(s);
award.sort((a,b) => b-a);
if(award.length == k+1) award.pop();
answer.push(award[award.length-1]);
}
return answer;
}
'🔥 해보자고 🔥' 카테고리의 다른 글
프로그래머스 스쿨 Lv01. 성격유형검사하기 (0) | 2022.11.30 |
---|---|
프로그래머스 스쿨 Lv01. 햄버거 만들기 (0) | 2022.11.29 |
프로그래머스 스쿨 Lv01. 푸드 파이트 대회 (0) | 2022.11.25 |
프로그래머스 스쿨 Lv01. 과일 장수 (0) | 2022.11.24 |
프로그래머스 스쿨 Lv01. 기사단원의 무기 (0) | 2022.11.23 |