희락코딩

mostFrequentCharacter 본문

프로그래밍/코드 문제 풀이

mostFrequentCharacter

Hello JoyCoding 2021. 4. 25. 01:45
728x90
반응형

function mostFrequentCharacter(str) {}

 

문제

문자열을 입력받아 가장 많이 반복되는 문자를 리턴

 

▶ 띄어쓰기 제외

▶ 가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자 리턴

▶ 빈 문자열을 입력받은 경우, 빈문자열로 리턴

 

입출력예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
let output = mostFrequentCharacter('apples not oranges');
console.log(output); // --> 'p'
 
output = mostFrequentCharacter('hello world');
console.log(output); // --> 'l'
 
output = mostFrequentCharacter('   ');
console.log(output); // --> ''
 
output = mostFrequentCharacter('');
console.log(output); // --> ''
 
output = mostFrequentCharacter('abba');
console.log(output); // --> 'b'
cs

 

수도코드 & 코드작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function mostFrequentCharacter(str) {
  //가장 많이 반복되는 문자(letter)를 리턴
  //각 문자가 몇개 있는지 확인
  //가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야하기 때문에
  //문자열을 객체로 만들때(각 문자의 갯수를 셀때) 가장 많이 반복되는 문자 찾는 작업도 함께 실행
  
  
  
  let rstObj = {}; //문자열을 객체로 만들어 저장할 변수 선언
  let mostCh = ''//가장 횟수가 많은 문자를 저장하는 변수 선언
  let mostCnt = 0//most 횟수를 저장하는 변수 선언
  for (let ch of str) {
    if (ch === ' ') { //띄어쓰기는 제외
      continue;
    }
    //1. 문자가 몇번 반복되는지 세는 작업
    if (rstObj[ch] === undefined) {
      rstObj[ch] = 1;
    } else {
      rstObj[ch] = rstObj[ch] + 1;
    }
    //2. 가장 많이 반복된 문자를 찾는 작업(비교)
    if (mostCnt < rstObj[ch]) {
      mostCh = ch;
      mostCnt = rstObj[ch];
    }
  }
  return mostCh;
}
cs

 

문제풀이

이문제의 주요핵심은 문자열을 객체로, 가장 많은 횟수를 저장, 가장 먼저해당되는 문자 이 세가지 입니다.

우선 문자열을 객체로 만들어주고 몇번 반복되는지 세는 작업을 합니다. 이에 대한 설명은 링크 참고

https://joy-codeing-lee.tistory.com/63?category=959903

 

countAllCharacters // 문자열을 객체로!

function countAllCharacters(str){} 문제 문자열을 입력받아 문자열을 구성하는 각 문자(letter)를 키로 갖는 객체를 리턴해야 합니다. 각 키의 값은 해당 문자가 문자열에서 등장하는 횟수를 의미하는 numbe

joy-codeing-lee.tistory.com

그리고 가장 많이 반복된 문자를 찾는 비교 작업을 해줍니다. 비교하는 방법을 콘솔창을 활용해서 실험을 통해 알아봅시다. 

 

비교 작업 예시

 

이렇게 객체와 넘버를 비교할때 객체의 키값을 활용해서 비교를 할 수 있었고 가장 횟수가 많은 문자를 선언한 변수를 반환 합니다.

728x90
반응형
Comments