프로그래머스 - 모의고사

이서현·2021년 5월 24일
0

Algorithm

목록 보기
20/76

매일매일 풀어야 하는데,, 바빠서 못풀었다...
05.24에 푼 문제입니다🌷
모의고사

function solution(answers) {
    var answer = [];
    var student1=[1,2,3,4,5]
    var student2=[2, 1, 2, 3, 2, 4, 2, 5]
    var student3=[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    var correct=new Map()
    correct.set(1,0)
    correct.set(2,0)
    correct.set(3,0)
    for(let i in answers){
        if(answers[i]===student1[i%5]) correct.set(1,correct.get(1)+1)
        if(answers[i]===student2[i%(student2.length)]) correct.set(2,correct.get(2)+1)
        if(answers[i]===student3[i%(student3.length)]) correct.set(3,correct.get(3)+1)
        
    }
    
    correct=[...correct.entries()].sort((a,b)=>b[1]-a[1])
    var max=0
    
    for(let cor of correct){
        if(cor[1]>=max){
            answer.push(cor[0])
            max=cor[1]
        }
    }
    
    return answer;
}

처음 풀었을 때!

function solution(answers) {
    var answer = [];
    var s1=[1, 2, 3, 4, 5]
    var s2=[2, 1, 2, 3, 2, 4, 2, 5]
    var s3=[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    
    var correct1=answers.filter((ans,i)=>ans===s1[i%s1.length]).length
    var correct2=answers.filter((ans,i)=>ans===s2[i%s2.length]).length
    var correct3=answers.filter((ans,i)=>ans===s3[i%s3.length]).length
    var max = Math.max(correct1,correct2,correct3)
    
    if(max===correct1) answer.push(1)
    if(max===correct2) answer.push(2)
    if(max===correct3) answer.push(3)
    
    return answer;
}

훨씬 간결한 코드!
filter를 사용하면 간결해진다.

profile
안녕하세요. 이서현입니다( ღ'ᴗ'ღ )

0개의 댓글