프로그래머/Python
[Python] Leet Code 819 : Most Common Word
태히리
2021. 2. 12. 19:40
본 내용은 <파이썬 알고리즘 인터뷰>를 참고했습니다.
class Solution:
def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
words = [word for word in re.sub(r'[^\w]', ' ', paragraph)
.lower().split()
if word not in banned]
counts = collections.Counter(words)
return counts.most_common(1)[0][0]
이 문제에서 배워야할 포인트
words = [word for word in re.sub(r'[^\w]', ' ', paragraph)
.lower().split()
if word not in banned]
- 정규표현식
- 입력 값에는 대소문자가 섞여 있으며 쉼표 등 구두점이 존재한다.
- 따라서 단어 문자를 제외하고는 필터링 작업이 필요하다.
- 대괄호 안에서는 메타문자 역할을 하는 것은 오직 , ^, -, ] 뿐이다.
- 캐릿(caret) ^ 문자가 여는 대괄호 바로 뒤에 있으면 문자가 반전된다.
- 정규식에서 \w는 단어 문자를 뜻하며, ^는 not을 의미한다.
- 따라서 위 정규식은 단어 문자가 아닌 모든 문자를 공백으로 치환하는 역할을 한다.
counts = collections.Counter(words)
return counts.most_common(1)[0][0]
- Counter
- Counter 객체를 이용해 구현
- words에서 가장 흔하게 등장하는 단어의 첫 번째 값을 most_common(1)으로 추출한다.
- [('ball', 2)]가 되며, 이 값의 [0][0]을 추출해서 최종적으로 첫 번째 인덱스의 키를 추출하게 된다.