입력 값 : 후보 이름이 적힌 투표지 ( 중복 가능 )
// 후보명단 : 정환, 시령, 규섭
const input = prompt('투표해주세요').split(' '); //input( 정환 정환 정환 시령 규섭 규섭 )
let result = {}; // 후보자 : 득표수를 나타낼 객체
let winner = ''; // 최다 득표자
for(let i in input) {
let value = input[i]; // value 값 변수지정
result[value] = result[value] === undefined ? 1 : result[value] + 1;
}
winner = Object.keys(result).reduce((a,b)=> {
return result[a] > result[b] ? a : b;
}
console.log(`후보자 ${winner}이 ${result[winner]}표로 당선되었습니다!`);
// 후보자 정환이 3표로 당선되었습니다!
* point
1. for in 문
2. Array.reduce()
입력값을 for in문에서 사용하여 인덱스 값을 리턴, input[i] 로 후보자의 이름들을 변수 value에 저장했다.
그 다음 객체 result[value]로 키값에 해당하는 value가 없을 시 1, 있을 시 +1 해주었다.
winner 에 Object.key(result)로 후보자의 이름들을 문자열 배열로 받아, Array.reduce()함수로 value값들을 비교 후
가장 큰 value값을 가진 후보자의 이름을 저장하였다.
'FRONTEND > Algorithm' 카테고리의 다른 글
[Algorithm] 10진수를 2진수로 변환 출력하기 (0) | 2022.08.27 |
---|