[JavaScript][Programmers] 모의고사

조준형·2021년 7월 3일
0

Algorithm

목록 보기
10/142
post-thumbnail

🔎 모의고사

❓ 문제링크

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

📄 제출 코드

// 1번 : 1~5 반복
// 2번 : 2한번 1,3,4,5 한번씩
// 3번 : 33 11 22 44 55 33 11 22 44 55
function solution(answers) {
    
    let p1 = [1,2,3,4,5];
    let p2 = [2,1,2,3,2,4,2,5];
    let p3 = [3,3,1,1,2,2,4,4,5,5];


    let result1 = answers.filter((x,i)=> x == p1[i%p1.length]).length;
    let result2 = answers.filter((x,i) => x == p2[i%p2.length]).length;
    let result3 = answers.filter((x,i) => x == p3[i%p3.length]).length;
    let answer = [];
    let max = Math.max(result1, result2, result3);
    
    if (result1 == max) answer.push(1);
    if (result2 == max) answer.push(2);
    if (result3 == max) answer.push(3);

    return answer;
}

일정한 규칙을 가진 정답지(배열)을 돌면서 정답을 비교해 가장 큰 값을 뽑아낸다.
처음엔 일정한 규칙을 가지는 새로운 배열을 for문을 통해 만들었었다.
ex) 초기 p1

let j = 0;
 for (var i = 1; i <= answers.length; i++) {
   i % 5 == 0 ? j = 5 : j = i % 5
   p1.push(j);
 }

근데 굳이 이럴 필요없이 규칙만큼의 배열을 만들어서 해당 인덱스를 돌게 만들면 될 거 같았다.

let result1 = answers.filter((x,i)=> x == p1[i%p1.length]).length;
let result2 = answers.filter((x,i) => x == p2[i%p2.length]).length;
let result3 = answers.filter((x,i) => x == p3[i%p3.length]).length;

i%p1.length가 규칙을 한바퀴 다도는거니까 answer와 일치하는 만큼의 길이를 저장.

📘 참고

https://niceman.tistory.com/77

profile
깃허브 : github.com/JuneHyung

0개의 댓글