성장에 목마른 코린이

(완전탐색) 모의고사 220409 본문

코딩 테스트 준비/프로그래머스 level 1

(완전탐색) 모의고사 220409

성장하는 코린이 2022. 4. 9. 01:14
728x90

나의 솔루션

function solution(answers) {
    let one = [1,2,3,4,5];
    let two = [2,1,2,3,2,4,2,5];
    let three = [3,3,1,1,2,2,4,4,5,5];
    
    let correct = [0,0,0];
    let max = 0;
    let ans = [];
    
    // 맞은 갯수 알아내기
    for (let i = 0; i < answers.length; i++) {
        if (answers[i] === one[i%5]) {
            correct[0]++;
        }
        if (answers[i] === two[i%8]) {
            correct[1]++;
        }
        if (answers[i] === three[i%10]) {
            correct[2]++;
        }
    }
    // 많이 맞은 문제의 수 구하기
    for (let j = 0; j < correct.length; j++) {
        if (correct[j] >= max) {
            max = correct[j];
        }
    }
    
    // 문제 가장 많이 맞힌 사람 구하기,
    // 가장 높은 점수를 받은 사람이 여럿일 경우
    // 오름차순 정렬 상태로 리턴
    for (let k = 0; k < correct.length; k++) {
        if (max === correct[k]) {
            ans.push(k+1);
        }
    }
    return ans;
}

좋아요가 가장 많이 달린 솔루션

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

느낀점

나머지 %를 이용해서 구현하는 부분을 못떠올려서 구글링을 하면서 해결했습니다..

이 부분을 이해할때 일일이 대입해서 보니까 이해가 됬습니다. 더 열심히 공부해야겠다고 생각했습니다!

그리고 filter와 더 친해지자....

for문처럼 filter와 친해지는 그날까지 화이팅!

Comments