프로그래머스 - [Level 1] 모의고사(JAVASCRIPT)

less than 1 minute read

프로그래머스 모의고사

카테고리 : 완전탐색

 간단한 완전탐색문제이다.
 3가지 배열을 만들고, 
 일치하는 경우를 각각 계산해주고, 
 max값과 같으면 정답 배열에 넣어준다.

소스코드

function solution(answers) {
    let answer = [];
    let first=[1,2,3,4,5];  //5 
    let second=[2, 1, 2, 3, 2, 4, 2, 5]; // 8
    let third=[ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5]; // 10
    
    let one=0,two=0,three=0;
    let maxi=0;
    for(let i=0;i<answers.length;i++){
        if(answers[i]===first[i%5]) one++;
        if(answers[i]===second[i%8]) two++;
        if(answers[i]===third[i%10]) three++;
    }
    maxi=Math.max(one,Math.max(two,three));
    if(maxi===one) answer.push(1);
    if(maxi===two) answer.push(2);
    if(maxi===three) answer.push(3);
    return answer;
}

다른 사람의 풀이

fiter을 활용해 간단하게 풀이했다. 생각보다 코딩테스트에서 map, reduce, filter가 많이 사용되는 것 같다.

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;
}

Leave a comment