[Lv1]모의고사

HeeJin.log·2021년 7월 10일
0

코딩 테스트

목록 보기
7/10
post-thumbnail

0.문제설명

1,2,3번 수포자가 찍는 방식에 따라 주어진 답에서 가장 많이 맞춘 사람을 출력한다.

1.문제풀이

answer배열 문자길이에 맞게 각각 수포자의 답 패턴을 구한다.
하나씩 정답과 비교하면서 맞춘 개수를 하나의 배열에 저장한다.
최댓값을 가진 학생(배열의 index)를 출력한다.

2.코드

function solution(answers) {
    let count1 = 0;
    let count2 = 0;
    let count3 = 0;
    const result = [];
    const person1 = "12345".repeat(answers.length / 5) + [12345].slice(0, answers.length%5);
    const person2 = "21232425".repeat(answers.length / 8) + [2123245].slice(0, answers.length%8);
    const person3 = "3311224455".repeat(answers.length / 10)+ [3311224455].slice(0, answers.length%10);
    
    for(let i=0; i< answers.length ; i++){
        if(parseInt(person1[i]) === answers[i]){
            count1 = count1 + 1;
           }
    }
     for(let j=0; j< answers.length ; j++){
        if(parseInt(person2[j]) === answers[j]){
            count2 = count2 + 1;
           }
    }
     for(let k=0; k< answers.length ; k++){
        if(parseInt(person3[k]) === answers[k]){
            count3 = count3 + 1;
           }
    }
    result.push(count1,count2,count3);
    
    const MAX = Math.max.apply(null,result);
    const winners = [];
    let winner = result.indexOf(MAX);
   
    while(winner != -1){
        winners.push(winner+1);
        winner = result.indexOf(MAX, winner+1);
    }
    
    
    var answer = winners;
    return answer;
}

3.후기

2명 이상이 최고점을 받을 수 있기 때문에 Math.max()로 한번에 출력하기 보다는, Max값을 저장하고 하나, 하나 비교하며 최고점자를 출력하는게 point이다.

0개의 댓글