Programing/백준
[백준/JS] 1157 - 단어공부
sunflo
2023. 9. 6. 23:19
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
풀이
KeyPoint
Map Object
- 코드의 간편화를 위해 모두 대문자로 바꿔준다.
- 입력받은 데이터로 Map Object를 만든다.
- 객체를 순회하여 가장 큰 값의 Key 를 구한다.
- 다시 한번 객체를 순회하여 Key의 Value와 동일한 Value를 가지는 다른 Key가 있는지 확인한다.
- 다른 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);