-
[leetcode] 819. Most Common WordAlgorithm/1일 1코테 2021. 4. 28. 14:21반응형
819. Most Common Word
leetcode.com/problems/most-common-word/
조건
1. 금지어는 제거할 것
2. 특수문자 제거할 것
3. 소문자 혹은 대문자로 통일할 것
나의 답
def mostCommonWord(self, paragraph: str, banned: List[str]) -> str: import re # 전처리 paragraph = re.sub("[!?',;.]", ' ', paragraph) # 특수문자 제거 paragraph = paragraph.lower() # 소문자로 통일 p = list(paragraph.split()) # 공백 기준으로 리스트로 분리 # 금지어 제거 answer = [] if banned: for word in p: if word not in banned: # 금지어에 없으면 append answer.append(word) else: answer = p # 빈도 넣을 리스트 cnt = list(answer.count(i) for i in answer) # 문자와 빈도 결합 m = zip(answer, cnt) # count 순으로 정렬하되 count가 같을 경우 abc순 m = sorted(m, key=lambda x : (-x[1], x[0])) return m[0][0]
모범 답
def mostCommonWord(self, paragraph: str, banned: List[str]) -> str: import re # 특수문자 제거, 소문자 통일, 공백으로 분리한 뒤 # banned 단어가 아니면 해당 word들을 list로 만듦. 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]
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[프로그래머스] H-index (0) 2021.06.11 [leetcode] 1. Two Sum (0) 2021.05.04 [leetcode] 937. Reorder Log Files (0) 2021.04.28 [leetcode] 344. Reverse String (0) 2021.04.14 [leetcode] 125.Valid Palindrome (0) 2021.04.14