알파벳 대소문자로 된 단어가 주어지면,
이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오.
단, 대문자와 소문자를 구분하지 않는다.
Mississipi
?
baaa
A
일단 대소문자 구분을 안하고 출력이 대문자이니 처음부터 대문자로 전부 바꾸어주자.
const sentence = 'Mississipi'; console.log(sentence.toUpperCase()); // expected output: "MISSISSIPI"
그리고 각 알파벳이 몇개인지 카운트해주는 배열을 만들어주자.
let arr = new Array(26); arr.fill(0);
카운트가 다 끝나면 max(최댓값)을 구해주자.
let max = 0; arr.map((value) => (value > max ? (max = value) : null));
그리고 답을 먼저 구해주자.
(여기서는 최댓값이 중복되는 알파벳이 있어도 상관없다 나중에 걸러내기 때문)let ans = String.fromCharCode(arr.indexOf(max) + 65); //fromCharCode(value)는 charCodeAt(value)의 반대개념
그리고 arr를 내림차순 해주고 배열 첫번째 값과 두번째 값이 같으면
최대가 중복되니까 '?'를 출력해주자
그게 아니면 ans값을 출력해 주면 된다.
const input = require('fs')
.readFileSync('/dev/stdin')
.toString()
.trim()
.toUpperCase();
let arr = new Array(26);
arr.fill(0);
input.split('').map((value) => arr[value.charCodeAt(0) - 65]++);
let max = 0;
arr.map((value) => (value > max ? (max = value) : null));
let ans = String.fromCharCode(arr.indexOf(max) + 65);
arr.sort((a, b) => {
return b - a;
});
if (arr[0] === arr[1]) {
console.log('?');
} else {
console.log(ans);
}
[문자열 대문자로]
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase