5/23 TIL

이세영·2024년 5월 23일
0
post-thumbnail
post-custom-banner

오늘의 배움(Today I Learned - TIL) - 문자열에서 가장 빈번한 문자 찾기

개요

문자열에서 가장 빈번하게 등장하는 문자를 찾아내는 과정은 매우 흥미로운 프로그래밍 문제 중 하나입니다. 이 과정을 통해 자바스크립트의 객체를 사용하여 문자의 빈도를 계산하고, 조건에 따라 다른 결과를 반환하는 방법을 배울 수 있습니다.

배운 내용

  1. 문자 빈도 계산하기: 문자열을 순회하면서 각 문자가 등장하는 횟수를 계산합니다. 이를 위해 객체를 사용하여 각 문자를 키로, 해당 문자가 등장하는 횟수를 값으로 저장합니다.

  2. 가장 빈번한 문자 찾기: 계산된 빈도수를 바탕으로 가장 많이 등장한 문자를 찾습니다. 이 과정에서 두 가지 상황이 발생할 수 있습니다.

    • 단일 문자 반환: 요구사항에 따라 가장 빈번한 문자가 여러 개일 경우 그 중 하나만 반환하도록 합니다.
    • 여러 문자 반환: 모든 가장 빈번한 문자를 배열로 반환하는 경우입니다. 이는 사용자의 요구사항에 따라 달라질 수 있습니다.
  3. 동적 결과 처리: 결과적으로, 함수는 사용자의 요구에 따라 가장 빈번한 문자 하나를 반환하거나, 빈도수가 같은 모든 문자를 배열로 반환할 수 있습니다.

코드 예시

function mostFrequentChar(s) {
  const frequency = {};
  for (let char of s) {
    if (frequency[char]) {
      frequency[char]++;
    } else {
      frequency[char] = 1;
    }
  }

  let maxCount = 0;
  let resultChar = null;

  for (let char in frequency) {
    if (frequency[char] > maxCount) {
      maxCount = frequency[char];
      resultChar = char;
    }
  }

  return resultChar;
}

강민 튜터님의 풀이

세영님 풀이계획과 로직을 가만히 보다보니, for 문을 한번만 사용하게끔 개선도 가능할 거 같은 생각이 듭니다! 혹시나 시간이 되신다면 for 문을 한번만 사용하시는 로직을 한번 도전해 보시는 것도 큰 도움이 될 것 같습니다.

function mostFrequentChar(s) {
  const frequency = {};
  let maxCount = 0;
  let resultChar = null;

  for (let char of s) {
    if (frequency[char]) {
      frequency[char]++;
    } else {
      frequency[char] = 1;
    }

    // 현재 문자의 빈도가 maxCount보다 크면 업데이트
    if (frequency[char] > maxCount) {
      maxCount = frequency[char];
      resultChar = char;
    }
  }

  return resultChar;
}
profile
블로그 관리 하루에 한번씩 도전!
post-custom-banner

0개의 댓글