강의로 돌아가기
열정영웅

JS 어디가 문제일까요...?

!!!

작성중인 코드―solution.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function solution(k, score) {
    const kLimitArr = []
    const result = []
    // 명예의 전당 수만큼 출연 가능
    // 매일 명예의 전당에서 가장 낮은 스코어가 발표점수가 된다.
    // 점수를 받고 명예의 전당 전일차 발표 점수보다 높으면 들어감
    for(let i = 0; i < score.length; i++) {
        if(i === 0) {
            kLimitArr.push(score[i])
            result.push(score[i])
        }
        if(i >= 1) {
            if(result[i-1] <= score[i]) { // 다음수를 넣기위한 빌드
                kLimitArr.push(score[i]) // 전날보다 높으면 추가한다. 
                kLimitArr.sort((a,b)=>a-b) // 그뒤로 sort를 진행하고 
                if(kLimitArr.length > k) {  // 하지만 K 수를 넘을수는 없다..크크
                    kLimitArr.splice(0,1) // 스플라이스로 짤라준뒤 
                    result.push(kLimitArr[0]) // 그거의 첫번째를 넣어준다.
                }else{
                    result.push(kLimitArr[0]) // 3을 안넘을때는 그냥 결과에 추가
                }
            }else {
                result.push(kLimitArr[0]) // 작을때는 그냥 작은수 추가 
            }
        }
    }
    return result
}
1 개의 답변
이재민

중간에 if문 하나가 문제가 있습니다.

if(result[i-1] <= score[i]) { // 다음수를 넣기위한 빌드

어떠한 경우라도 다음 수가 들어가야 비교가 가능한데
저 코드로 인해 1일부터 마지막 날까지 출연한 가수들의 점수 비교가 되지 않습니다.

저 if문만 빼면 될 것 같습니다~

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.