알고리즘 문제

알고리즘 문제 js 34- 모의고사

<zinny/> 2022. 2. 5. 12:04
728x90

 

내가 쓴 코드

function solution(answers) {
    var answer = [];
    var list = [
        [1,2,3,4,5],
        [2,1,2,3,2,4,2,5],
        [3,3,1,1,2,2,4,4,5,5]
    ]
    var point = [0,0,0]

    for(var i=0; i<answers.length; i++){
        if(answers[i] === list[0][i%5])
            point[0]++;
        if(answers[i] === list[1][i%8])
            point[1]++;
        if(answers[i] === list[2][i%10])
            point[2]++;
    }
    var max =0;
    for(var j=0; j<point.length; j++){
        if(point[j] > max)
            max = point[j];
    }
    for(var k=0; k<point.length; k++){
        if(max===point[k])
            answer.push(k+1);
    }
    return answer;
}
  • 수포자가 찍는 방식을 리스트의 배열로 먼저 선언하고, 높은 점수를 받을  사람을 넣을 빈 배열도 선언해 둔다 
  • 각각의 수포자가 얻을 점수로 비교하기 위해 점수 값도 미리 0으로 선언한다
  • 반복문을 돌려서 각각의 방식과 정답을 순서대로 비교해 본다. 
  • 각각의 수포자가 찍는 방식과 찍는 루틴의 개수가 다르기 때문에 개수에 맞게 확인하도록 한다 (%사용)
  • 반복문을 돌려서 최대 첨수를 찾는다 (최대값 찾는 함수로 사용해도 될듯)
  • 다시 반복문을 돌려서 최대값과 점수값을 비교해서 최종 값에 푸쉬 해준다
  • +1을 하는 이유는 배열의 기본은 0부터 시작하기 때문이다 

 

728x90