금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라. 대소문자 구분을 하지않으며, 구두점(마침표, 쉼표 등) 또한 무시한다.
먼저 구두점을 제거하고, 소문자로 변경한다. 1에서 사용했던 방법 그대로 사용한다.
paragraph = re.sub(r'[^a-zA-Z]', ' ', paragraph).lower().split()
그 다음, 밴에 있는 단어를 제외한 리스트를 새로 작성한다.
paragraph = [s for s in paragraph if s not in banned]
파이썬의 딕셔너리를 이용하여 paragraph 리스트에 나온 단어의 갯수를 카운팅한다.
par_dict = {}
for par in paragraph:
if par_dict.get(par) == None:
par_dict[par] = 0
par_dict[par] += 1
딕셔너리의 items 메서드를 사용하면, (key, value) 쌍의 리스트로 반환하여준다. 이를 리스트로 변한한 뒤, value 값을 key로 max 값을 가져온다.
paragraph = list(par_dict.items())
return max(paragraph, key=lambda x:x[1])[0]
전체 코드는 다음과 같다.
import re
class Solution:
def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
paragraph = re.sub(r'[^a-zA-Z]', ' ', paragraph).lower().split()
paragraph = [s for s in paragraph if s not in banned]
par_dict = {}
for par in paragraph:
if par_dict.get(par) == None:
par_dict[par] = 0
par_dict[par] += 1
paragraph = list(par_dict.items())
return max(paragraph, key=lambda x:x[1])[0]
'코딩테스트 > 알고리즘' 카테고리의 다른 글
[Q. 06] 가장 긴 팰린드롬 부분 문자열 (0) | 2023.03.16 |
---|---|
[Q. 05] 그룹 애너그램 (0) | 2023.03.16 |
[Q. 03] 로그 파일 재정렬 (0) | 2023.03.15 |
[Q. 02] 문자열 뒤집기 (0) | 2023.03.15 |
[Q. 01] 유효한 팰린드롬 (0) | 2023.03.15 |