알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
const input = require('fs').readFileSync('/dev/stdin').toString();
let str = input.toUpperCase(); // 대소문자 구분없으므로 대문자로 모두 변경
let alphas = new Array(26).fill(0); // 알파벳만큼 배열 생성
for(let i=0; i<str.length; i++) {
alphas[str.charCodeAt(i)-65]++; // str의 charCode 값을 배열의 0번째부터 담기위해,, 해당 알파벳에 count를 플러스
}
let max = Math.max(...alphas); // 가장 큰 수를 받고
let idx = alphas.indexOf(max); // 해당 값의 인덱스 값을 저장
let sameRate=false;
for(let i=0; i<alphas.length; i++) { // alphas 배열을 순회하면서 동일한 count 값이 있는지 조회
if( alphas[i] === max && i != idx ) {
sameRate=true;
break;
}
}
console.log(sameRate? '?' : String.fromCharCode(idx+65)); // index 값을 통해 알파벳을 출력하거나, 동일할경우 ?를 출력