When will you grow up?

Most Common Word [leetcode 819] 본문

02. Study/Algorithm

Most Common Word [leetcode 819]

미카이 2024. 8. 11. 23:22

https://leetcode.com/problems/most-common-word/description/

 

가장 흔한 단어

 

1. 처음 풀이법

- 소문자 변경

- 구두점 제거 및 단어 분리

- 단어 빈도수 계산

- 가장 빈번한 단어 찾기

 순서로 간단하게 해결하였다.

 

처음 풀이한 코드는 다음과 같다.

from typing import List

class Solution:
    def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
        # 소문자로 변환
        paragraph = paragraph.lower()
        
        # 구두점 제거 및 단어 분리
        words = []
        current_word = ""
        for char in paragraph:
            if char.isalpha():
                current_word += char
            else:
                if current_word:
                    words.append(current_word)
                    current_word = ""
        if current_word:  # 마지막 단어 추가
            words.append(current_word)
        
        # 단어 빈도수 계산
        word_count = {}
        for word in words:
            if word not in banned:
                word_count[word] = word_count.get(word, 0) + 1
        
        # 가장 빈번한 단어 찾기
        max_count = 0
        most_common = ""
        for word, count in word_count.items():
            if count > max_count:
                max_count = count
                most_common = word
        
        return most_common

 

 

하지만 생각해보니, 정규표현식으로 간단하게 풀이할 수 있었다.

import re
from typing import List

class Solution:
    def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
        # 소문자로 변환하고 알파벳이 아닌 문자를 공백으로 대체
        paragraph = re.sub(r'[^a-zA-Z]', ' ', paragraph.lower())
        
        # 단어로 분리
        words = paragraph.split()
        
        # 단어 빈도수 계산
        word_count = {}
        for word in words:
            if word not in banned:
                word_count[word] = word_count.get(word, 0) + 1
        
        # 가장 빈번한 단어 찾기
        return max(word_count, key=word_count.get)

 

 

두개 속도를 비교해보면 처음 순서대로 풀이한게 속도 측면은 더 빨랐으며, 아래 풀이는 간편하게 풀이할 수 있다.

 

아마 코테를 보게된다면 정규표현식은 생각못하고 첫번째 방법으로 풀이할 것 같다.

'02. Study > Algorithm' 카테고리의 다른 글

Longest Palindromic Substring [leet code 5]  (0) 2024.08.14
Group Anagrams [leet code 49]  (0) 2024.08.12
dynamic programming  (0) 2020.11.03
binary search  (0) 2020.10.11
Sort Algorithm  (0) 2020.10.11
Comments