728x90
반응형
문제는 문자열에 단어 중 금지된 단어를 제외하고 가장 빈도가 높은 단어를 출력하라.!
paragraph 을 우선 전처리를 한다. 문자를 제외한 나머지는 공백으로 메꾸는 유용한 코드 한 줄.
words = [word for word in re.sub('[^\w]',' ',paragraph).lower().split()]
그리고 banned 금지된 단어에 포함이 되면 안되므로 아래의 코드를 실행한다. 위의 코드의 끝자락에 if 문을 추가해주는 것을 따로 떼어서 적은 것 뿐이다.
words2 = [word for word in words if word not in banned]
그리고 collections 모듈의 Counter 함수를 사용한다. 포함된 원소들의 빈도를 알려주는 함수이다.
Counter 안에 들어간 자료구조 속 원소들의 개수를 딕셔너리 형태로 빈도를 알려준다. 여기서 추가적으로 most_common 함수를 사용하면 빈도가 가장 많은 순으로 출력하여 준다. 그중에 첫번째를 뽑으면 문제의 정답.!
from collections import Counter
Counter(words2).most_common(1)[0][0]
빈도 분석 해야한다. 그러면 바로 Counter 로 편하게 ~
ref) 파이썬 알고리즘 인터뷰
728x90
반응형
'파이썬 알고리즘 코딩' 카테고리의 다른 글
가장 긴 팰린드롬 부분 문자열 문제 (0) | 2021.03.28 |
---|---|
그룹 애너그램 문제 (0) | 2021.03.28 |
로그파일 재정렬 문제 (0) | 2021.03.28 |
유효한 펠린드롬 문제 (0) | 2021.03.28 |
프로그래머스 Lv3 여행경로 (0) | 2021.03.13 |
댓글