알고리즘 문제 풀기(프로그래머스)
https://github.com/hoinlee-moi/Algorithm
JS기본문법 다시 공부
https://github.com/hoinlee-moi/ModernJS
React 강의 듣기
https://github.com/hoinlee-moi/React_prac
react강의도 듣고 알고리즘 문제도 풀고 영화도 보고^^
물론 매일 하겠다는 모든 목표를 이루고 있지는 않다.
처음부터 스케줄 생각 안하고 무조건 하겠다 하고 무리해서 짠 계획이니 다 이룰거란 생각은 안했지만 적어도 매일매일 공부하자는 지키고 있는 중이다.
오늘알고리즘
명예의 전당 https://school.programmers.co.kr/learn/courses/30/lessons/138477
function solution(k, score) {
var answer = [];
let fame = [];
for(let i=0;i<=score.length-1;i++){
if(i<k){
fame.push(score[i])
}else{
if(score[i]>Math.min(...fame)&&score[i]<Math.max(...fame)||score[i]>=Math.max(...fame)){
fame.shift()
fame.push(score[i])
}
}
fame.sort((a,b)=>a-b)
answer.push(Math.min(...fame))
}
return answer;
}
언뜻 굉장히 어렵게 푼 것 같기도 하고 조건 식도 많은 것 같긴 하다.
한번의 반복문을 이용하여 풀었고
k
만큼은 무조건 명예의 전당에 올라가야 하니 i
가 k
보다 작을 땐 모두 fame
에 넣었다k
번째까지만 명예의 전당에 올라가니 조건을 걸었다sort
로 오름차순으로 놓기 때문에 앞에서 점수를 하나 뺄 때 가장 작은 수가 빠지게 된다.fame
)에서 가장 작은 수를 넣는다.훨씬 쉬운 풀이가 있었는데 이건 머리를 조금만 더 고민해봤으면 좋았을 것 같다.
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;
}
temp
)과 정답 배열(answer
)을 선언score
를 반복시켜 temp
에 각 원소를 넣는다sort
로 내림차순 시킨다.temp
의 길이가 k
보다 클 때(k
번의 점수가 모두 올라간 이후)temp
배열의 k번째 원소를 answer
에 넣어준다.temp
배열을 항상 내림차순 시키기 때문에 앞에서부터 k
번째가 명예의 전당 점수이기 때문이다.answer
에 temp
의 맨 마지막 숫자를 넣어준다(경연 일수가 k
번째가 아닐때)