LeetCode : 819

Daehwi Kim·2020년 7월 31일
0

LeetCode

목록 보기
4/23

문제

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

예시

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

Output: "ball"

나의 풀이

  • 풀지는 못하고 할 수 있는 데까지 풀어보았다.
class Solution:
    def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
        pa_list = []
        dic_list = {}
        ban_txt = banned[0].replace(',', '').replace('.', '').lower()
        text = paragraph.replace(',', '').replace('.', '').lower()

        for word in text.split():
            if word != ban_txt:
                pa_list.append(word)

        for i in pa_list:
            try : 
                dic_list[i] += 1
            except:
                dic_list[i] = 1

        count = 1
        for j in dic_list:
            if dic_list[j] > count:
                result = j
                count = dic_list[j]
        return result
                

Counter객체를 사용한 풀이

class Solution:
    def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
        # List Comprehension과 re를 이용해서 특수문자를 제거하는
        # 데이터 클렌징 이라 부르는 입력값에 대한 전처리작업
        words = [word for word in re.sub(r'[^\w]', ' ', paragraph)
                .lower().split()
                    if word not in banned]
        
        # Counter 객체를 이용하여 단어 갯수를 저장 
        counts = collections.Counter(words)
        
        # most_common 메소드를 이용하여 가장 빈번한 단어를 출력
        return counts.most_common(1)[0][0]
  • 단어문제는 아직 익숙하지 않아서 좀더 많이 풀어봐야겠다.
profile
게으른 개발자

0개의 댓글