[JS100제] 문제37 : 반장 선거 ⭐

youngseo·2022년 2월 17일
0

JS100제

목록 보기
20/25
post-thumbnail

문제37 : 반장 선거

새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램을 작성하기로 하였습니다.

**입력**
원범 원범 혜원 혜원 혜원 혜원 유진 유진

**출력**
혜원()가 총 4표로 반장이 되었습니다.

정답

const array = prompt('이름을 입력해주세요.').split(' ');
let result = {};
let winner = "";

for(let index in array){
  let val = array[index];
  result[val] = result[val] === undefined ? 1 : result[val] = result[val] + 1;
}

winner = Object.keys(result).reduce(function(a, b){
  return result[a] > result[b] ? a : b
});

console.log(`${winner}(이)가 총 ${result[winner]}표로 반장이 되었습니다.`);

result라는 변수에 학생 이름을 key로 받은 표의 갯수를 value로 객체를 생성합니다. 객체 생성 시 key값에 학생이름이 존재를 하는 경우 해당 keyvalue값에 1을 더하고, 그렇지 않은 경우에는 keyvalue에 1을 부여합니다.

winner이라는 변수에 reduce 함수를 이용해 최다득표학생명이 나올 수 있도록 합니다. 그리고 이 key값에 해당 학생명을 key로 하는 value값이 생성될 수 있도록 합니다.

0개의 댓글