(LeetCode)819. 가장 흔한 단어
by hutswing
(LeetCode)819. 가장 흔한 단어
문제
아이디어
- 리스트 컴프리헨션과 딕셔너리의 Count객체를 활용한 풀이
코드
class Solution:
def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
# \w는 단어 문자를 뜻하며, ^는 not을 뜻함 [^\w]는 문자가 아닌 모든항목을 공백으로 치환
words = [word for word in re.sub('[^\w]', ' ', paragraph).lower().split()
if word not in banned]
counts = collections.Counter(words)
return counts.most_common(1)[0][0]
배운점
- 리스트 컴프리헨션은 가독성이 많이 떨어지고 실제 구현시에도 쉽게 코드를 작성하는것이 어려운것같다.
- 아래 코드는 paragraph에서 문자(a-z)를 제외한 나머지를 공백으로 치환하고, 문자열을 소문자로 치환하고, 공백을 기준으로 단어를 나눠서 words라는 리스트를 생성하는데 이때 각 단어에 해당하는 word는 banned 리스트에 포함유무를 확인하여 banned에 있는단어는 words에 추가하지않는다.
words = [word for word in re.sub('[^\w]', ' ', paragraph).lower().split()
if word not in banned]
- most_common(1)은 counter에서 가장 흔한단어로 값은 [(‘ball’, 2)]가 되기때문에 [0][0]으로 추출
Subscribe via RSS