리트코드 819. Most Common Word

🤔 Q. 금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라. 대소문자 구분을 하지 않으며, 구두점(마침표, 쉼표 등) 또한 무시한다.

입력

paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."
banned = ["hit"]

출력

"ball"

✏️ 풀이1: 리스트 컴프리헨션, Counter 객체 사용

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]

리스트 컴프리헨션 List Comprehension

  • 직관적으로 리스트를 생성하는 방법이다. 대괄호 [] 로 감싸고 내부에 for 문과 if 문을 사용하여 반복하며 조건에 만족하는 것만 리스트로 만든다.
  • 간결하고 속도가 빠르다.
# 일반적인 리스트 생성
words = []
for word in re.sub(r'[^\w]', ' ', paragraph).lower().split():
	if word not in banned:
    	words.append(word)
        
# 리스트 컴프리헨션
words = [word for word in re.sub(r'[^\w]', ' ', paragraph)
    	.lower().split()
        	if word not in banned]

참고 : [Python의 꽃] 리스트 컴프리헨션(List Comprehension)

Collections.Counter 의 함수

  • most_common(n)
    최빈값 상위 n개를 반환한다. n이 빈 값이면 요소 전체를 반환한다.
  • elements()
    입력된 값의 요소를 무작위로 반환한다. 대소문자를 구분한다. 요소의 총 개수가 1개 미만일 시 반환하지 않는다.
  • substract()
    요소를 뺀 개수를 반환한다. 요소가 없는 경우 음수의 값이 반환된다.

출처 : [Python] collections 모듈의 Counter

profile
우주 먼지

0개의 댓글