알고리즘

프로그래머스 : 모의고사 (Javascript)

만년다딱2 2021. 5. 9. 03:16

1. 문제링크

https://programmers.co.kr/learn/courses/30/lessons/42840

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

2. 접근방법

규칙성을 발견했다!

1번은 1,2,3,4,5

2번은 2,1,2,3,2,4,2,5

3번은 3,3,1,1,2,2,4,4,5,5

에 맞춰서 배열에 담아주고 비교비교 쓰무쓰

 

3. 코드

const moe = class {
    constructor(index, sum) {
    this.index = index;
    this.sum = sum;
  }
}
function solution(answers) {
    var answer = [];
    var num1 = [1, 2, 3, 4, 5];
    var num2 = [2, 1, 2, 3, 2, 4, 2, 5];
    var num3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    var index1 = 0, index2 = 0, index3 = 0;
    var moes = [];
    for(var i = 0; i < 3; i++)
        moes[i] = new moe(i + 1, 0);
    
    for(var i = 0; i < answers.length; i++){
        if(answers[i] == num1[index1]){
            moes[0].sum++;
            
        }
        if(answers[i] == num2[index2]){
            moes[1].sum++;
            
        }
        if(answers[i] == num3[index3]){
            moes[2].sum++;
            
        }
        index1++;
        index2++;
        index3++;
        if(index1 == 5)
            index1 = 0;
        if(index2 == 8)
            index2 = 0;
        if(index3 == 10)
            index3 = 0;
    }
    var max = 0;
    for(var i = 0; i < 3; i++){
        if(max < moes[i].sum){
            max = moes[i].sum;
            answer = [];
            answer.push(moes[i].index);
        } else if ( max == moes[i].sum){
            answer.push(moes[i].index);
        }
    }
    
    // answer.sort(function(a, b) {
    //     return a - b;
    // });
    return answer;
}

4. 마치며

오타....... 가 많았다....

Javascript는 하나하나의 오타를 친절하게 잡아주지 않는다.

IDE의 도움 없이 직접 때려보는게 힘들지만 많은 연습이 되었다.

계속해서 사용해보자