본문 바로가기

CS/알고리즘

[230421] 모의고사

반응형

 

 

문제

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

 

프로그래머스

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

programmers.co.kr

 

 

풀이

내 풀이

완전탐색을 이용하여 문제를 풀라고 한다.

일단 나는 더럽게 풀었음.

function solution(answers) {
    const result = [];
    const arr = [0, 0, 0];
    const a = [1,2,3,4,5];
    const b = [2,1,2,3,2,4,2,5];
    const c = [3,3,1,1,2,2,4,4,5,5];
    
    for(let i = 0; i < answers.length; i++){
        const answer = answers[i]; 
        if(answer === a[i % 5]) arr[0] += 1;
        if(answer === b[i % 8]) arr[1] += 1;
        if(answer === c[i % 10]) arr[2] += 1;
    }
    
    const max = Math.max(...arr);
    for(let i = 0; i < 3; i++) {
        if(max === arr[i]) result.push(i+1);
    }
    
    return result
}

더럽게 풀었는데 한 번에 성공하니 기부니가 찝찝하다..

그렇다면 다른 사람의 풀이를 보는게 인지상정

 

 

 

다른 풀이

..라고 생각했는데 나같은 사람이 또 있었음

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

다른 풀이들도 보니까 다들 비슷하게 풀었더라

 

 

(+)

생각해보니 좀 가혹한 듯함

대신 수포자는 탈출할 듯

 

 

 

 

 

반응형

'CS > 알고리즘' 카테고리의 다른 글

[230422] 추억 점수  (0) 2023.04.22
[230422] 소수 찾기  (0) 2023.04.21
[230421] n^2 배열 자르기  (0) 2023.04.21
[230421] 위장  (0) 2023.04.21
[230420] 캐시  (0) 2023.04.20