문제 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