문제
문자열을 입력받아 가장 많이 반복되는 문자(letter)를 리턴해야 합니다.
주의 사항
- 띄어쓰기는 제외합니다.
- 가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야 합니다.
- 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.
문제 논리 순서 : 1.객체를 떠올리고 2. 가장 큰 수를 정의한 후 3 각 각 비교하면서 큰수의 속성 값을 바꿔준다.
가장 큰 수를 뽑는 문제에서는 가장 중요한 포인트가 가장 큰 수를 먼저 정의하는 것이다.
1. 그 객체의 속성과 속성 값을 하나 만들자.
let object = { mostCount: 0, mostFrequent: '' };
2. for문을 통해서 만약에 띄어쓰기가 있을 때 띄어쓰기도 카운트 하기 때문에 이를 예외 처리 해야한다. by "continue"
if(str[i]===' '){
continue
}
3. 만약에 어떠한 값도 들어있지 않다면 1을 더하고
어떤 임의 값이라도 들어있으면 속성값에 1을 플러스 한다.
if(object[str[i]]=== undefined){
object[str[i]]=1
}
object[str[i]] +=1
4. 만들어진 객체들을 비교할 차례이다 객체의 속성값이 기존의 object[mostCout]의 값보다 크다면
object["mostCout"]=object[str[i]]를 할당해주면 된다.
같은 원리로 object['mostFrequent']도=str[i] 를 할당하면된다.
if(object[str[i]]>object["mostCount"]){
object['mostCount']=object[str[i]]
object['mostFrequent']=str[i]
}
완성본
function mostFrequentCharacter(str) {
// TODO: 여기에 코드를 작성합니다.
let object = { mostCount: 0, mostFrequent: '' };
for(let i=0; i<str.length; i++){
if(str[i]===' '){
continue
}
if(object[str[i]]=== undefined){
object[str[i]]=1
}
object[str[i]] +=1
if(object[str[i]]>object["mostCount"]){
object['mostCount']=object[str[i]]
object['mostFrequent']=str[i]
}
}
return object['mostFrequent']
}'나를 성장시키는 알고리즘' 카테고리의 다른 글
| 객체를 중첩배열로 리턴하는 함수 (0) | 2021.09.28 |
|---|---|
| 빈 배열에 새로운 배열의 요소들을 순서대로 넣고싶을 때 (0) | 2021.09.27 |
| 나를 성장시켜주는 알고리즘 #4 객체 (0) | 2021.09.03 |
| 나를 성장시켜주는 알고리즘 #3 문자열을 배열로 배열을 문자열로 바꾸는 방법 (0) | 2021.08.02 |
| 배열 array unshift, shift, pop,push의 원리 (0) | 2021.07.31 |