IF - 학급 회장(해쉬)

Goody·2021년 4월 14일
0

알고리즘

목록 보기
88/122
post-custom-banner

문제

학급 회장을 뽑는데 후보로 기호 A, B, C, D, E 후보가 등록을 했습니다.
투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가 쓰여져 있으며 선생님은 그
기호를 발표하고 있습니다.
선생님의 발표가 끝난 후 어떤 기호의 후보가 학급 회장이 되었는지 출력하는 프로그램을 작
성하세요. 반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정합니다.


예시

arrOutput
"BACBACCACCBDEDE"C

풀이 및 회고

  • 원소 중 가장 빈도가 많은 원소를 찾는 문제이다.
  • 각 원소를 key로 갖는 해시 맵을 만들면, key 와 같은 원소가 나올 때마다 value를 1씩 늘려줄 수 있다.

코드

const solution = (votes) => {
    const arr = votes.split("");
    let max = 0;
    let captatin = '';
    const candidates = {};

    arr.forEach((el) => {
        if(candidates[el]) candidates[el]++;
        else candidates[el] = 1;
        
    });

    for(let student in candidates) {
        if(candidates[student] > max) {
            max = candidates[student];
            captatin = student;
        }
    }
    return captatin;
}
post-custom-banner

0개의 댓글