[2021.07.27]

Darlene·2021년 7월 27일
0

문제 1)

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

입력 : 원범 원범 혜원 혜원 혜원 혜원 유진 유진

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

1. 요구사상 분석

가장 표를 많이 받은 사람이 반장이 된다.

2. 요구사항을 구체적이고 절차적으로 변환하기

공백으로 입력값을 구분하여 입력한다.
입력값을 배열로 담아낸다.
배열의 중복 값과 개수를 추출해야 한다.
가장 큰 개수 값을 가진 이름과 개수를 출력해야 한다.

3. 코드로 작성하기

답안지 작성
const input = prompt('후보들을 공백으로 입력하세요').split(' ');

let result = {};
let president = '';

for(let i = 0; i < input.length; i++) {
 let name = input[i]
 result[name] = result[name] === undefined ? 1 : result[name] = result[name] +1
}

president = Object.keys(result).reduce((a,b) => result[a] > result[b] ? a : b);

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

// 후보들을 공백으로 입력하세요> 원범 원범 혜원 혜원 혜원 혜원 유진 유진

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

😍 새롭게 알게 된 점

  1. Object.keys()
    : 객체에서 key값을 가져와 배열로 반환하는 함수
const obj = {
  a: 'Hello',
  b: 52,
  c: false,
};

console.log(Object.keys(obj));
// expected output: Array ["a", "b", "c"]
  1. 배열 중복 값 개수 구하는 방법
  • reduce() 메서드
    : 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환한다.
const array = [1, 2, 3, 4];
const reducer = (a, b) => a + b;

console.log(array.reduce(reducer));  // 1 + 2 + 3 + 4
// expected output: 10

🙏 회고

기본기가 많이 부족하다는 생각을 했다.
더 많이 공부하고 익히도록 해야겠다. 🔥🔥🔥


0개의 댓글