새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램을 작성하기로 하였습니다.
입력 값의 중복 값과 개수를 key,value로 저장하는 객체를 만드는 방법.
빈 객체를 선언하고 key가 있다면 key, value+1를 할당, key가 없다면 key, 1을 객체에 할당
let map = {};
name.forEach(x => {
if(map[x]) map[x] = map[x]+1;
else map[x] = 0 + 1;
});
console.log(map);
let map = name.reduce((acc,cur) => {
acc.set(cur, (acc.get(cur)||0) +1);
return acc;
},new Map());
const result = name.reduce((acc,cur) => {
acc[cur] = (acc[cur] || 0) +1;
return acc;
},{});
function answer(str){
let name = str.split(' ');
let map = name.reduce((acc,cur) => {
acc.set(cur, (acc.get(cur)||0) +1);
return acc;
},new Map());
let count = Math.max(...(map.values())); // Map의 value중 최대값
let obj = Object.fromEntries(map); // Map -> object
let winner = Object.keys(obj).find(key => obj[key] === count);
// value로 key값 찾기
console.log(`${winner}(이)가 총${count}표로 반장이 되었습니다.`)
}
Object.keys() 메소드는 주어진 객체의 속성 이름들(key)을 일반적인 반복문과 동일한 순서로 순회되는 열거할 수 있는 배열로 반환.
function answer(str){
let name = str.split(' ');
let result = {};
let winner = "";
for(let index in name){
let val = name[index];
result[val] = result[val] === undefined ? 1 : result[val] + 1;
}
winner = Object.keys(result).reduce(function(a, b){
return result[a] > result[b] ? a : b
});
console.log(`${winner}(이)가 총 ${result[winner]}표로 반장이 되었습니다.`);
}