[프로그래머스] 명예의 전당 (1)
2022. 12. 19. 21:13ㆍ기록/Programmers
- 목차
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/138477
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 문제 풀이
function solution(k, score) {
const answer = [];
const stack = [];
for (let i = 0; i < score.length; i++) {
if (stack.length < k) {
stack.push(score[i]);
} else {
if (score[i] > Math.min(...stack)) {
stack.pop();
stack.push(score[i]);
}
}
stack.sort((a, b) => b - a);
answer.push(stack[stack.length - 1]);
}
return answer;
}
- 스택의 길이가 k 보다 작을 경우
- 스택에 현재 점수 넣기
- 스택의 길이가 k 보다 크거나 같을 경우
- 스택에서 최소 점수보다 현재 점수가 클 경우
- 스택에서 최소 점수 삭제
- 밑에서 내림차순 정렬을 한 상태에기 때문에 스택의 마지막 값은 최소 점수임
- 스택에 현재 점수 넣기
- 스택에서 최소 점수보다 현재 점수가 클 경우
- 스택의 요소들을 내림차순으로 정렬
- 스택의 마지막 값인 최소 점수를 정답 배열에 할당
다른 사람의 문제 풀이
function solution(k, score) {
const stack = [];
return score.reduce((a,c) => {
if(stack.length < k) {
stack.push(c);
stack.sort((a,b) => a - b);
} else {
stack.push(c);
stack.sort((a,b) => a - b);
stack.shift();
}
a.push(stack[0]);
return a;
},[])
}
function solution(k, score) {
var temp = [];
let answer = [];
score.forEach(el => {
temp.push(el);
temp.sort((a, b) => b - a);
if(k < temp.length)
answer.push(temp[k - 1]);
else
answer.push(temp[temp.length - 1]);
})
return answer;
}