개발자 첫걸음/백준

백준 문자열 5 - 단어 공부 [1175]

프로아마추어 2022. 10. 5. 15:25

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

 

 

나의 답안

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
    단어가 주어졌을 때 가장 많이 사용된 알파벳을 대문자로 출력하라.
    사용횟수가 가장 많은 알파벳이 2개 이상이면 ?를 반환한다.
*/
 
const input = require("fs")
  .readFileSync(0)
  .toString()
  .trim();
 
const obj = {};
 
// 대문자로 변환 후 개수 카운트
input
  .toUpperCase()
  .split("")
  .forEach((s) => {
    obj[s] = obj[s] !== undefined ? ++obj[s] : 1;
  });
 
// 빈도수가 가장 많은 수 체크
let max = Math.max(...Object.values(obj));
const answerArr = [];
 
// max(빈도수)값과 일치하는 key값만 배열에 담는다.
for (let key of Object.keys(obj)) {
  if (obj[key] === max) {
    answerArr.push(key);
  }
}
 
const answer = answerArr.length === 1 ? answerArr[0] : "?";
 
console.log(answer);
 
cs