본문 바로가기

프로그래머스/완전탐색

[완전탐색] 프로그래머스 '모의고사' - js

반응형

1. 문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 코드

function solution(answers) {
    let answer = [];

    const one = [1, 2, 3, 4, 5];
    const two = [2, 1, 2, 3, 2, 4, 2, 5];
    const three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];

    let score = [0, 0, 0];
    
    // 인덱스 번호가 0부터 시작하므로 인덱스 번호를 길이로 나눠도 절때 0이 나올 수 없음!
    for (let i = 0; i < answers.length; i++) {
        if (answers[i] === one[i % one.length]) score[0]++;
        if (answers[i] === two[i % two.length]) score[1]++;
        if (answers[i] === three[i % three.length]) score[2]++;
    }

    const max = Math.max(...score);

    for (let i = 0; i < score.length; i++) {
        if (max === score[i]) answer.push(i + 1);
    }

    return answer;
}

filter를 사용해도 되지만 filter는 메모리를 더 많이 잡아먹는다고 한다.

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

    let a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
    let a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
    let a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
    let 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;
}

 

복기)

3/27
4/13

 

반응형