프로그래머스 문제 풀이

[프로그래머스 Lv.1] 명예의 전당(1) JS

MOLLY_ 2024. 9. 10. 17:50
728x90

<목차 >

0. 문제 설명 및 제한사항
1. 작성한 코드
2. 풀이 및 의사코드

3. 소감

 

 

0. 문제 설명 및 제한사항

 

그렇게 어려운 문제는 아니었다.

 

  1. 점수 배열을 내림차순(큰 점수순)으로 정렬하여 k번째 점수까지 끊고,
  2. 배열 숫자 하나 돌 때마다 현재까지 나온 수 중에 가장 작은 수를 계산해서
  3. 배열에 넣은 것을 return 하면 됨

 

대충 어떻게 하는지는 알겠었지만 정확하게 의사코드를 작성하지 않고 코드를 작성하면 코드 짜다가 헷갈리거나 헤매는 경우가 많아서 의사코드를 최우선으로 작성하려고 하는 중이다.

 

그리고 메서드 사용법을 계속 익혀야겠다.

어떤 메서드를 써야겠다는 것은 알겠는데 사용법이 헷갈린 경우가 있어서 말이다. 틈틈이 MDN 문서를 보든가 자주 출제되는 건 정리해서 공부하는 게 맞는데 잊는 게 문제다,,, 이번엔 문서 보고 좀 참고해서 풀었다.

 

으악 기억하고 공부하자

 

 

1. 작성한 코드

function solution (k, score) {
    let KScore = [];
    let answer = [];
    
    for (let i = 0; i < score.length; i++) {
        KScore.push(score[i]);
        KScore.sort((a, b) => b - a);
        
        if (KScore.length > k) KScore.pop();
        answer.push(KScore[KScore.length - 1]);
    }
    
    return answer;
}

 

if 문이나 함수 본문이 한 줄이면 한 줄로 맞춰야 더 깔끔해서 자꾸 강박이 생기고 있다.

 

 

2. 풀이 및 의사코드

오늘 작성한 코드 뭔가 맘에 든다...


코드 작성 전, 위에 의사코드를 최대한 자세하게 + 순서대로 작성하고

필요한데 작성법이 헷갈리는 메서드는 알아본 다음 참고해서 코드를 쓰는 중이다.

 

배열의 마지막 값을 뽑아내는 건 length - 1이라는 걸 다시 한번 기억하도록 해야겠다. 필요할 때 기억이 잘 안 난다.

 

 

3. 소감

전에는 정말 코딩 테스트 문제 푸는 자체가 부담스럽고 어렵게 느껴져서 벽처럼 생각됐는데, 매일 한 문제씩이라도 풀거나 보려고 하니 굉장히 도움이 많이 되는 게 최근에 실감난다.

 

오늘처럼 내가 생각한 대로 풀리는 날은 쾌감도 크고 뿌듯하고 , 내가 점점 성장하고 있구나를 느낀다.

 

무척 쉬운 문제이긴 했지만.. 레벨 2 문제까지 '아주 easy하군 ㅋ' 하면서 풀 수 있게끔 더 열심히 해야겠다. 파이팅!

 

 

728x90