[프로그래머스] 모의고사 - 자바스크립트

Jinny·1일 전
0
  • 날짜 / 주차-누적 횟수: 2025.02.06(목) / 1주차-3회
  • 사이트 이름: 프로그래머스
  • 사용 언어: JavaScript
  • 문제 고유 번호 및 레벨: 42840 / Lev 1
  • 나의 풀이 방법:
    function solution(answers) {
        let answer = [];
        
        let oneAns = [1, 2, 3, 4, 5];
        let twoAns = [2, 1, 2, 3, 2, 4, 2, 5];
        let threeAns = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
        
        let count = [0, 0, 0];
        
        answers.forEach((v, i) => {
            let index = i % oneAns.length;
            if (v === oneAns[index]) count[0]++;
            
            
            index = i % twoAns.length;
            if (v === twoAns[index]) count[1]++;
            
            index = i % threeAns.length;
            if (v === threeAns[index]) count[2]++;
            threeAns[index]
        })
        
        let max = Math.max(...count);
        
        if (count[0] === max) answer.push(1);
        if (count[1] === max) answer.push(2);
        if (count[2] === max) answer.push(3);
        
        return answer;
    }
  • 최적 풀이 방법:
    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;
    }
    
    • answer빈 배열을 만든다.
    • a1, a2, a3각 배열에 찍는 돌리는 정답을 넣는다.
    • answer을 filter()로 검사하여 각 수포자가 몇 개 맞혔는지 계산한다.
    • Math.max로 최대값을 찾는다.
    • 최대값을 가진 수포자들을 answer 배열에 저장 후 반환한다.
  • 배운 개념:
    • Math.max()
      • 여러 개의 숫자를 인자로 받아서 최대값을 반환하는 함수이다.
      • 배열을 직접 넣으면 배열은 숫자가 아니므로 NaN이 반환된다.
      • 배열을 펼쳐서 숫자처럼 만들어주면 사용 가능하다. Math.max(…arr)
profile
세상을 이롭게 하는 프론트엔드 개발자 Jinny

0개의 댓글

관련 채용 정보