Programing/백준

[백준/JS] 1157 - 단어공부

sunflo 2023. 9. 6. 23:19
 

1157번: 단어 공부

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

www.acmicpc.net

풀이

KeyPoint
Map Object
  1. 코드의 간편화를 위해 모두 대문자로 바꿔준다.
  2. 입력받은 데이터로 Map Object를 만든다.
  3. 객체를 순회하여 가장 큰 값의 Key 를 구한다.
  4. 다시 한번 객체를 순회하여 Key의 Value와 동일한 Value를 가지는 다른 Key가 있는지 확인한다.
  5. 다른 Key가 있다면 "?"를, 없다면 Key를 출력한다.

코드

const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("");

const upperCase = input.map((char) => char.toUpperCase()); // 코드의 간편화를 위해 대문자로 바꾼다.

let obj = new Map();

upperCase.forEach((char) => {
  if (!obj.has(char)) obj.set(char, 1);
  else obj.set(char, obj.get(char) + 1);
});

let win = "";

obj.forEach((v, k) => {
  if (win === "") win = k;
  if (obj.get(win) < v) win = k;
});

obj.forEach((v, k) => {
  if (obj.get(win) === v && k !== win) win = "?";
});

console.log(win);