[매일코딩-프로그래머스] 모의고사 06

2021. 12. 9. 10:28WEB Dev/CordingTEST

728x90

 

 

한 문제 가지고 엄청 오래 끄는 느낌이다!!

 

 

그래서 나는 

여기서 acnt, bcnt, ccnt를 value로 1, 2, 3을 key로 한 객체로 전환해서,

value값에 따라 객체를 내림차순 sort하고,

key값을 배열로 담는데,

sort한 객체의 value 값이 0이면 value를 담지 않는 코드를 써보려고 한다.

 

 

어제 썼던 글에서 내림차순 sort 까지 했고, key 값만 배열로 다시 담는데, 담을 때는 0이면 배열에 담지 않는 코드를 써야한다.

 

sortobj.map((v)=>{
        if(v[1]!=0){
            resultobj.push(parseInt(v[0]))
        }
    })

 

정렬한 배열을 map으로 돌려서

if문으로 v를 받아 v의 채점 결과가 0이 아니면 resultobj라는 결과를 받을 배열에 key값이었던 v[0]을 넣어준다...

그런데 이 값이 전부 string이었기 때문에 이 값을 parseInt로 변환해준다.

 

로 했는데 테스트는 통과했지만 정확성이 더 떨어졌다.

정말...

정이 떨어지는 문제다..

수포자 운운할때부터 알아봤다...

 

 

결국 질문에서 정답 코드를 보니 filter 메소드를 이용한다는데 너무 어렵다.

아악

 

function solution(answers) {
    var answer = [];
    let supo = [
                [1, 2, 3, 4, 5]
                , [2, 1, 2, 3, 2, 4, 2, 5]
                , [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
               ]

    /* // 이건 왜 안되고 밑에는 왜 되는가?
    for(let i = 0; i < supo.length; i++){
        answer[i] = supo[i].filter((v, k) => {
            return v == answers[k % supo[i].length];
        }).length;
    }
    console.log('for를 통한 answer값 추출')
    console.log(answer)
    */
    answer[0] = answers.filter( (a, i) => a === supo[0][i%5] ).length;
    answer[1] = answers.filter( (a, i) => a === supo[1][i%8] ).length; 
    answer[2] = answers.filter( (a, i) => a === supo[2][i%10] ).length;
    // console.log('대충 던진 answer값 추출')
    // console.log(answer)

    let rslt = [];
    const max = Math.max(... answer);
    for(var k=0; k<answer.length; k++){
        if(max===answer[k])
            rslt.push(k+1);
    }
    return rslt;
}

 

728x90