일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- #영어 명언
- 영어
- #영어
- 이미지 생성
- 딥러닝
- object detection
- #opencv
- TensorFlow
- word embedding
- tensorflow update
- text2img
- 영어명언
- python list
- #실생활영어
- convexhull
- findContours
- #실생활 영어
- #English
- opencv SURF
- #Android
- keras
- 완전탐색
- python __init__
- Convolution Neural Network
- python 알고리즘
- #1일1영어
- #일상영어
- #프로젝트
- tokenizing
- c언어
Archives
- Today
- Total
When will you grow up?
Most Common Word [leetcode 819] 본문
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