-
[프로그래머스 Level 1] 모의고사 (JavaScript)Coding Test/JavaScript 2024. 12. 2. 17:17
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42840
입출력 예
answers return [1,2,3,4,5] [1] [1,3,2,4,2] [1,2,3] 풀이
function solution(answers) { const answer = []; const ans1 = [1, 2, 3, 4, 5]; const ans2 = [2, 1, 2, 3, 2, 4, 2, 5] const ans3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]; const ans1Cnt = answers.filter((ans, idx) => ans === ans1[idx % ans1.length]).length; const ans2Cnt = answers.filter((ans, idx) => ans === ans2[idx % ans2.length]).length; const ans3Cnt = answers.filter((ans, idx) => ans === ans3[idx % ans3.length]).length; const maxCnt = Math.max(ans1Cnt, ans2Cnt, ans3Cnt); if(ans1Cnt === maxCnt) {answer.push(1)}; if(ans2Cnt === maxCnt) {answer.push(2)}; if(ans3Cnt === maxCnt) {answer.push(3)}; return answer; }
함수 solution은 한 개의 매개변수를 받는다.
1. 정답 리스트(배열): answers
이 문제는 간단하게,
세 명의 수험생의 답안 패턴에 따라 누가 가장 많은 정답을 맞췄는지를 구하는 문제이다.
먼저 ans1, ans2, ans3라는 수험생들의 반복되는 답안 패턴을 정의하였다.
이후 filter 함수를 통해 answers 배열을 순환하며 각 수험생이 맞춘 문제 수를 계산했다.
idx % ans@.length를 사용해
인덱스를 패턴 길이에 맞게 순환시켜서 답안이 반복되는 패턴을 구현했다.
이후 maxCnt를 통해 세 수험생 중 가장 많은 문제를 맞춘 수험생의 정답 수를 구했다.
이후 가장 많은 문제를 맞춘 학생의 번호를 answer 배열에 추가하여 return하였다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 1] 과일 장수 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 기사단원의 무기 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 2016년 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 폰켓몬 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 1] 카드 뭉치 (JavaScript) (1) 2024.11.25