프로그래밍/[ Python ]

[문자열 조작] 가장 흔한 단어

망나 2021. 1. 11. 08:55

* leetcode 819. Most Common Word

 

Q. 금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라. 대소문자 구분을 하지 않으며, 구두점(마침표, 쉽표 등) 또한 무시한다.

# 입력
paragraph = 'Bob hit a ball, the hit BALL flew far after it was hit.'
banned = ["hit"]

# 출력
"ball"

풀이 1. 리스트 컴프리헨션, Counter 객체 사용

def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
    # 정규식을 사용한 전처리
    # \w는 단어 문자(word character를 뜻하며, ^는 not을 의미하며 따라서 paragraph의 모든
    # 단어 문자가 아닌 문자를 공백으로 치환한다.
    words = [word for word in re.sub(r'[^\w]', ' ', paragraph).lower().split()
             if word not in banned]
    
    # 리스트의 모든 값들의 등장 수를 (값, 등장 수)로 반환하는 Counter를 사용
    # most_common(1)의 값은 [('ball', 2)]가 됨으로 [0][0]을 추출하여 리턴.
    counts = collections.Counter(words)
    return counts.most_common(1)[0][0]