본문 바로가기
Coding Test/JavaScript

[Javascript] (프로그래머스 level 1) 모의고사

by Chaedie 2022. 6. 30.
728x90

[Javascript] (프로그래머스 level 1) 모의고사

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이

function solution(answers) {
    const method2 = [2, 1, 2, 3, 2, 4, 2, 5];
    const method3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    const arr1 = new Array(answers.length).fill(0).map((x, i) => x = (i % 5) + 1);
    const arr2 = new Array(answers.length).fill(0).map((x, i) => x = method2[i % 8])
    const arr3 = new Array(answers.length).fill(0).map((x, i) => x = method3[i % 10] )

    const result = [];
    result.push([1, answers.filter((x, i) => x === arr1[i]).length])
    result.push([2, answers.filter((x, i) => x === arr2[i]).length])
    result.push([3, answers.filter((x, i) => x === arr3[i]).length])

    const maxScore = Math.max(result[0][1], result[1][1], result[2][1]);

    return result.filter((x, i) => x[1] === maxScore).map((x) => x[0])
}
  • 뭔가 우아함이 부족하고, 중복되는 코드를 하드코딩한게 눈에 보이네요.
  • 코테가 당장 토요일이다보니 정답 맞추는게 우선이라 우아한 코드 만들기 연습은 많이 못해서 아쉽네요. 일단 다른 사람 코드를 봅시다. 😭

다른 사람 풀이

function solution(answers) {
    var answer = [];
    const man1 = [1, 2, 3, 4, 5];
    const man2 = [2, 1, 2, 3, 2, 4, 2, 5];
    const man3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    let count = [0, 0, 0];

    for(let i = 0; i < answers.length; i++) {
        if(answers[i] == man1[i % man1.length]) count[0]++;
        if(answers[i] == man2[i % man2.length]) count[1]++;
        if(answers[i] == man3[i % man3.length]) count[2]++;
    }

    const max = Math.max(count[0], count[1], count[2]);
    for(let i = 0; i < count.length; i++) {
        if(max == count[i]) answer.push(i + 1);
    }

    return answer;
}
  • 배운 점, 느낀 점

  • 로직은 다들 비슷하네요.. 저번 문제에서도 적은것 같은데 메서드 연결할 때 쭉 늘어쓰는거 보다 중간 중간 끊어주는게 좀 더 읽기 편하고 이쁜것 같아요

댓글