Algorithm - 모의고사(완전탐색)

김민찬·2022년 4월 14일
0

알고리즘

목록 보기
1/15
post-thumbnail

프로그래머스 - 모의고사(완전탐색)

오랜만에 머리를 굴리기 위해서 알고리즘을 풀었다

오늘 푼 문제는 1단계 중 모의고사라는 문제다.

이 문제는 솔직히 공부하기에 좋은 문제라는 생각은 안드는게 너무 하드코딩 같다는 느낌이 들었다.

내 풀이

function solution(answers) {
    const answer = [];
    
    // 찍는 방식을 기록한 객체로, 이 부분은 하드코딩 필수적이다.
    const people = {
        1: [1, 2, 3, 4, 5],
        2: [2, 1, 2, 3, 2, 4, 2, 5],
        3: [3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
    }
    
    // 누가 몇 문제를 맞췄는지를 기록하는 객체를 만들었다.
    const corret = {
        1: 0,
        2: 0,
        3: 0,
    }
    
    // 2중 for문을 돌려서 퍼포먼스적으로는 좋지 않지만, 만약 사람이 추가 되었을때 위의 두 객체에 값들만 추가하면 된다.
    for (const person in people) {
        answers.forEach((answer, index) => {
          // index % people[person].length는 만약 찍는 방식(배열)의 길이를 넘어가면 다시 찍는방식을 처음부터 탐색하게 하기위해 저렇게 코딩했다.
            if(answer === people[person][index % people[person].length]) {
                corret[person]++;
            }
        })
    }
    
  // 가장 높은 점수를 찾는다.
    const maxValue = Math.max(...Object.values(corret));
    
  // 가장 높은점수를 받은 사람을 answer 배열에 집어넣는다.
    for (const key in corret) {
        if (corret[key] === maxValue) {
            answer.push(parseInt(key))
        }
    }
    
    return answer;
}
profile
두려움 없이

0개의 댓글