본문 바로가기

나를 성장시키는 알고리즘

나를 성장시켜주는 알고리즘#5문자열 중 가장 긴 문자를 출력해라

문제

문자열을 입력받아 가장 많이 반복되는 문자(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']

}