728x90
나의풀이
def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
sol={}
# 특수문자 전처리
for p in paragraph:
if p in ['!','?','\'',';','.',',']:
paragraph = paragraph.replace(p,' ')
paragraph=paragraph.lower()
paragraph=paragraph.split()
for p in paragraph:
c=paragraph.count(p)
sol[p]=c
sort_sol = sorted(sol.items(), key = lambda x : x[1], reverse=True)
for s in sort_sol:
if s[0] in banned:
pass
else:
return s[0]
- dict.item() : dict를 튜플(key, value)로 변환
먼저 특수문자가 포함되어 있기 때문에 전처리를 한 뒤 단어들의 갯수를 파악하여 딕셔너리 형태로 저장한 뒤 금지 단어에 포함되지 않는 가장 빈도수가 큰 단어를 출력하는 방법으로 풀었다.
풀이
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]
- r'string' : 문자열이 구성된 그대로 반환
a = 'abcdef\n'
print(a)
b = r'abcdef\n'
print(b)
- \w : [a-zA-Z0-9_]
- ^ : 제외하다.
- colletions.Counter() : dict 형태로 갯수 저장
- Counter.most_common(num) : 가장 빈도수가 높은 순서대로 num만큼 반환. 리스트 안에 튜플형태로 반환 ex. [('bob',1 )]
정규형을 사용하여 전처리를 진행하고 colletions.Counter()를 통해 개수 반환
반응형
'알고리즘' 카테고리의 다른 글
[파이썬 알고리즘 인터뷰] 두 수의 합 (0) | 2022.02.18 |
---|---|
[파이썬 알고리즘 인터뷰]그룹 애너그램 (0) | 2022.02.18 |
[파이썬 알고리즘 인터뷰] 로그파일 재정렬 (0) | 2022.02.18 |
[파이썬 알고리즘 인터뷰] 문자열 뒤집기 (0) | 2022.02.14 |
[파이썬 알고리즘 인터뷰] 유효한 팰린드롬 (0) | 2022.02.14 |