본 내용은 <파이썬 알고리즘 인터뷰>를 참고했습니다.
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]을 추출해서 최종적으로 첫 번째 인덱스의 키를 추출하게 된다.
'프로그래머 > Python' 카테고리의 다른 글
[Python] Leet Code 5. Longest Palindromic Substring (0) | 2021.02.13 |
---|---|
[Python] Leet Code 49 : Group Anagrams (0) | 2021.02.12 |
[Python] Leet Code 937 : Reorder Log Files 풀이 및 분석 (0) | 2021.02.03 |
[Python] Leet Code 344 : Reverse String 풀이 및 분석 (0) | 2021.02.03 |
[Python] Leet Code 125 : Valid Palindrome 풀이 및 분석 (0) | 2021.02.03 |