[LeetCode] 1456. Maximum Number of Vowels in a Substring of Given Length

2025. 4. 24. 16:13·코딩테스트/Python
목차
  1. 🔗 Problem Link
  2. ❔Thinking
  3. 💻Solution
  4. 🗝️keypoint
728x90
반응형

🔗 Problem Link

https://leetcode.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length/description/


❔Thinking

  • 문자열 s와 정수 k가 주어질 때, k개의 문자를 가지는 s의 부분 문자열 가운데에서 모음(a,e,i,o,u)이 최대 몇 개인지 반환한다.
    • s = 'abciiidef', k = 3 인 경우 output은 3이다. (부분 문자열 'iii')
    • s = 'aeiou', k = 2 인 경우 output은 2이다 (어떤 부분 문자열이라도 2) 

💻Solution

1. two-pointer를 활용한 풀이

def maxVowels(self, s: str, k: int) -> int:
    left = 0
    max_vowel_sub = 0
    now_vowel_sub = 0
    for right in range(len(s)):
        if s[right] in {'a','e','i','o','u'}:
            now_vowel_sub += 1
        if (right-left+1) == k:
            max_vowel_sub = max(max_vowel_sub, now_vowel_sub)
            if s[left] in {'a','e','i','o','u'}:
                now_vowel_sub -= 1
            left += 1
    return max_vowel_sub

 

2. queue를 활용한 풀이

from collections import deque
def maxVowels(self, s: str, k: int) -> int:
    window = deque([])
    max_vowel_sub = 0
    now_vowel_sub = 0
    for char in s:
        window.append(char)
        if char in {'a','e','i','o','u'}:
            now_vowel_sub += 1
        if len(window) == k:
            max_vowel_sub = max(max_vowel_sub, now_vowel_sub)
            tmp = window.popleft()
            if tmp in {'a','e','i','o','u'}:
                now_vowel_sub -= 1
    return max_vowel_sub

🗝️keypoint

  1. 만약 window에 담긴 모음을 확인한 후 window를 업데이트 할 경우, 'abcdefiii'와 같이 마지막 'iii'는 확인하지 못한다.
  2. 모음을 확인하는 in 부분에서, 훨씬 더 많은 글자와 비교가 이루어져야 한다면 list 보다 set, dict이 더 효율적이다.
저작자표시 (새창열림)

'코딩테스트 > Python' 카테고리의 다른 글

[LeetCode] 1493. Longest Subarray of 1's After Deleting One Element  (0) 2025.04.27
[LeetCode] 1004. Max Consecutive Ones III  (0) 2025.04.26
[Baekjoon] 1013. Contact  (0) 2025.04.11
[LeetCode] 643. Maximum Average Subarray I  (0) 2025.04.10
[LeetCode] 283. Move Zeroes  (0) 2025.04.07
  1. 🔗 Problem Link
  2. ❔Thinking
  3. 💻Solution
  4. 🗝️keypoint
'코딩테스트/Python' 카테고리의 다른 글
  • [LeetCode] 1493. Longest Subarray of 1's After Deleting One Element
  • [LeetCode] 1004. Max Consecutive Ones III
  • [Baekjoon] 1013. Contact
  • [LeetCode] 643. Maximum Average Subarray I
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[LeetCode] 1456. Maximum Number of Vowels in a Substring of Given Length
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.