<aside> 💬 lv0, 데이터 구조

단어 빈도수 세기

문제 설명

주어진 문자열에서 각 단어의 빈도수를 계산하는 함수를 작성해주세요. 단어는 공백으로 구분되며, 대소문자를 구분하지 않습니다. 반환되는 빈도수 정보는 사전 형태여야 합니다.

예를 들어, 문자열 "Hello world, hello"에서 함수는 {"hello": 2, "world": 1}을 반환해야 합니다.


제한 사항


입출력 예

입력 (문자열) 출력 (단어 빈도수 사전)
"Hello world, hello" {"hello": 2, "world": 1}
"The quick brown fox" {"the": 1, "quick": 1, "brown": 1, "fox": 1}
"One one one two" {"one": 3, "two": 1}

입출력 설명

주어진 문자열에서 각 단어의 빈도수를 계산하여 사전 형태로 반환합니다.

</aside>

😺 풀이 1. 반복문과 조건문을 조합

def solution(data):
    words = data.lower().split() **#1 문자열 전처리**
    frequency = {} **#2 빈도수 계산을 위한 딕셔너리 초기화**
    for word in words: **#3 단어별 빈도수 계산**
        cleaned_word = "".join(char for char in word if char.isalpha())
        if cleaned_word:
            frequency[cleaned_word] = frequency.get(cleaned_word, 0) + 1
    return frequency **#4 빈도수 반환**

단계별 풀이 전략

  1. 문자열 전처리

    주어진 문자열 data를 모두 소문자로 변환하고 공백을 기준으로 단어를 분리합니다.

  2. 빈도수 계산을 위한 딕셔너리 초기화

    각 단어의 빈도수를 저장할 빈 딕셔너리 frequency를 초기화합니다.

  3. 단어별 빈도수 계산

    분리된 단어들에 대해 순회하면서, 각 단어에서 알파벳만을 추출합니다.

    정제된 단어가 비어있지 않은 경우, 딕셔너리frequency에서 해당 단어의 빈도수를 하나 증가시킵니다. 여기서 get 메서드를 사용하여 단어가 frequency에 이미 존재하면 그 값을 가져오고, 그렇지 않으면 0을 반환한 후 1을 더합니다.

  4. 결과 반환

    모든 단어의 빈도수 계산이 완료된 후, 딕셔너리frequency를 반환합니다. frequency 는 각 단어와 해당 단어의 빈도수를 키-값 쌍으로 가집니다.

알아둬야 할 개념

lower() 메서드


split() 메서드


isalpha() 메서드