문제 37 : 반장 선거

less than 1 minute read

문제 37 : 반장 선거

// 학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램을 작성하자.

// 입력
// 원범 원범 혜원 혜원 혜원 혜원 유진 유진

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

풀이 1

const names = prompt("이름들을 입력하세요.").split(" "); // [원범, 원범, 혜원]

const election = {};
for (let i = 0; i < names.length; i++) {
  if (election[names[i]]) {
    election[names[i]]++;
  } else {
    election[names[i]] = 1;
  }
}

const votes = Object.values(election); // [2, 4]
const candidates = Object.keys(election); // [원범, 혜원]
let maxVote = Math.max(...votes); // [4]
let president;
for (let i = 0; i < votes.length; i++) {
  if (election[candidates[i]] === maxVote) {
    president = candidates[i];
  }
}

console.log(`${president}(이)가 총 ${maxVote}표로 반장이 되었습니다.`);

풀이 2

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]}표로 반장이 되었습니다.`);

Leave a comment