알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
Mississipi
?
zZa
Z
z
Z
baaa
A
const input = require('fs').readFileSync('/dev/stdin').toString().trim().toLowerCase();
let str = {};
let maxChar = '';
let maxCount = 0;
for(let i = 0; i < input.length; i++){
if(input[i] in str){
str[input[i]] += 1;
} else{
str[input[i]] = 1;
}
}
for(let x in str){
if(maxCount < str[x]){
maxChar = x;
maxCount = str[x];
} else if(maxCount == str[x]){
maxChar = '?';
}
}
console.log(maxChar.toUpperCase());
이해하는데 좀 오랜 시간이 걸린 문제다.
저 str 의 형태가 {a : 1, b : 2, c : 3... } 식으로 값이 담겨서 이 안의 값들을 비교해주는 것이기 때문에 이 문제를 풀려면 객체에 대한 이해가 필요했다.
일반 반복문을 돌려서 위의 객체의 형태로 만들어주었고 그 후에 또 for in 문을 돌려서
최대값과 그에 해당하는 문자열을 구해주었다.