알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
예제 입력 1:
Mississipi
예제 출력1:
?
예제 입력 2:
zZa
예제 출력 2:
Z
코드:
let input = require("fs").readFileSync(0).toString().toLowerCase();
const result = Array(26).fill(0);
// [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for (let i = 0; i < input.length; i++) {
result[input.charCodeAt(i) - 97] ++; // input 내 알파벳 위치 찾아서 result에 할당
}
const max = Math.max(...result); // 찾은 값중에 최대치 찾기
const index = result.indexOf(max); // result에서 max값 인덱스 찾기
let isSame = false;
// 가장 많이 사용된 알파벳 값(max)을 사용해 max값과 동일한 또 다른 알파벳이 있는지 확인
// 예시: m이 4번으로 max인데, i도 4번이면 for문 break
for (let j = 0; j < 26; j++) {
if (result[j] === max && index != j) {
isSame = true;
break;
}
}
console.log(isSame ? "?" : String.fromCharCode(index + 65));