문제
주어진 문자열에서 가장 많이 등장하는 알파벳을 찾아 반환하는 프로그램을 작성하시오. 단, 대소문자를 구분하지 않습니다.
만약 가장 많이 등장하는 알파벳이 여러 개인 경우, true를 반환합니다.
예를 들어, "hello"라는 문자열이 주어졌을 때, 'l'이 2번 등장하여 가장 많이 등장하는 알파벳입니다. 따라서 'l'을 반환합니다.
함수의 입력은 문자열로 주어지며, 반환값은 문자열 내에서 가장 많이 등장하는 알파벳입니다.
예시
const test_case1 = 'hello'
// l출력
const test_case2 = 'hi'
// true 출력
const test_case3 = 'a'
// a 출력
풀이
function findMostFrequentAlphabet(str) {
const alphabetArray = new Array(26).fill(0);
str.toLocaleLowerCase()
.split('')
.forEach((e) => {
alphabetArray[e.charCodeAt() - 97]++;
});
let maxValue = -1;
let maxIndex = -1;
let multiMaxValue = false;
alphabetArray.forEach((e, idx) => {
if (e > maxValue) {
maxValue = e;
maxIndex = idx;
multiMaxValue = false;
} else if (e === maxValue) multiMaxValue = true;
});
return multiMaxValue ? multiMaxValue : String.fromCharCode(maxIndex + 97);
}
길이가 26인 알파벳 배열을 0으로 초기화합니다. 이 배열은 알파벳 등장 횟수를 저장합니다.
입력된 문자열을 소문자로 전환 후 각 문자마다 등장할때 알파벳 배열의 들어갈 수 있게 작업 후 배열 인덱스 값을 증가시킵니다.
그 다음 가장 많이 등장하는 알파벳을 추적합니다.
알파벳 배열을 돌면서 동률인 알파벳이 나왔을때 multi값을 true로 하여 true일때는 그대로 반환하고 아닐경우 최대값 인덱스로 문자를 반환합니다.
'코딩문제' 카테고리의 다른 글
연속된 문자 제외 중복된 문자 체크 (0) | 2024.03.30 |
---|---|
대체된 문자열 길이 구하기 (0) | 2024.03.30 |
회문 판별기 (0) | 2024.03.29 |
다이아몬드 패턴 생성하기 (1) | 2024.03.29 |
초나라 장기 기물 정리하기 (0) | 2024.03.28 |