코딩테스트 연습 28: [프로그래머스] 모의고사

gyomni·2022년 1월 26일
0

Algorithm

목록 보기
28/33
post-thumbnail

출처 : 프로그래머스
사용 언어 : JavaScript

초기 코드

function solution(answers) {
    var answer = [];
    return answer;
}

내가 작성한 코드

function solution(answers) {
    
    let po1=[ 1, 2, 3, 4, 5, 1, 2, 3, 4, 5];
    let po2=[ 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5];
    let po3=[ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
  
    let poNum = [0,0,0];
    let answer=[];
    for(let i=0;i<answers.length;i++){
        if(po1[i%po1.length]===answers[i]){
            poNum[0]++;
        }
        
        if(po2[i%po2.length]===answers[i]){
            poNum[1]++;   
        }
        
        if(po3[i%po3.length]===answers[i]){
            poNum[2]++;   
        }
    }
  
  
     let max=Math.max(...poNum);
     for(let j=0;j<poNum.length;j++){
         if(max===poNum[j]){
             answer.push(j+1);
        }
    
}
    return answer; 
}

다른 사람 풀이

function solution(answers) {
    var answer = [];
    var a1 = [1, 2, 3, 4, 5];
    var a2 = [2, 1, 2, 3, 2, 4, 2, 5]
    var a3 = [ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5];

    var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
    var a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
    var a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
    var max = Math.max(a1c,a2c,a3c);

    if (a1c === max) {answer.push(1)};
    if (a2c === max) {answer.push(2)};
    if (a3c === max) {answer.push(3)};


    return answer;
}

🙍‍♀️ 📝

문제 수가 지정되지 않은 상황에서 답이 일정한 주기로 반복되고 있으니if(po1[i%po1.length]===answers[i]) 로 답을 체크할 수 있다!

filter로 한층 코드가 깔끔하게 ,,,🙊🙉

profile
Front-end developer 👩‍💻✍

0개의 댓글