[주의사항]
1. 띄어쓰기는 제외합니다
2. 가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야 합니다(실시간 체크가 필요)]
3. 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다]
[해결방안] 객체의 key, value를 이용하여 key의 상태 값을 value에 저장해서 key의 상태변화를 실시간으로 체크할 수 있다. -> key는 각 문자, value는 각 문자의 반복횟수
function mostFrequentCharacter(str) {
// TODO: 여기에 코드를 작성합니다.
// 문자열 내 모든 공백 제거 , unmutable이기 때문에 결과값이 원본배열에 영향안줌
str = str.replace(/ /g,'');
if(str.length > 0) {
// 최대 반복 문자
let maxNumLetter = '';
// 최대 반복 수
let maxNum = 0;
// 각 문자 반복횟수 저장 객체
let tempObj = {};
for(let i=0;i<str.length;i++) {
// 객체를 이용하여 각 문자 : 문자 반복 횟수를 key-value형식으로 저장(해당 문자가 key로 저장여부 확인)
// 해당 문자가 key값으로 저장된 경우 value값 1증가, 없는 경우 해당 문자를 key로 value = 1로 값 추가
str[i] in tempObj ? tempObj[str[i]] = tempObj[str[i]] + 1 : tempObj[str[i]] = 1;
// 객체를 반복수행하여 현재 존재하는 value를 비교하여 가장 큰수를 maxNum, 해당 key는 maxNumLetter로 저장
// 각 문자열의 문자 반복횟수를 count할 때 마다 실시간으로 체크
for(key in tempObj) {
if(tempObj[key] > maxNum) {
maxNum = tempObj[key];
maxNumLetter = key;
}
}
}
return maxNumLetter;
}
else return '';
}
'알고리즘' 카테고리의 다른 글
어떠한 수를 입력받으면 해당 숫자의 제곱근 값을 소수점 2자리로 반환 (0) | 2021.05.07 |
---|---|
유효성 검사 (0) | 2021.05.07 |
문자열을 입력받아 문자열을 구성하는 각 문자(letter)를 키로 갖는 객체반환 (0) | 2021.05.07 |
계산기 (0) | 2021.05.07 |
소수 여부를 판별하는 알고리즘 (0) | 2021.05.07 |