•
문제 설명 : 제공된 문자열에서 k 길이만큼 연속된 범위를 확인하였을 때, 가장 모음이 많은 경우 몇개의 모음이 있는지 반환
•
풀이 방법
◦
첫 탐색 범위의 정보를 미리 구해둔다.
◦
이후 가장 앞/뒤 정보만 변경되기 때문에 아래와 같이 진행한다.
▪
신규 탐색 범위의 직전(이전 탐색 범위의 첫 문자)가 모음이라면, count 감소
▪
신규 탐색 범위의 가장 마지막 문자(새로 추가된 문자)가 모음이라면 count 증가
•
시간복잡도 :
•
성공 코드
class Solution:
def maxVowels(self, s: str, k: int) -> int:
vowel_info = {'a', 'e', 'i', 'o', 'u'}
# 초기 범위의 모음 문자 확인
vowel_count = sum(1 for ch in s[:k] if ch in vowel_info)
max_vowel_count = vowel_count
for i in range(1, len(s) - k + 1):
if vowel_count > 0 and s[i - 1] in vowel_info:
vowel_count -= 1
if s[i + k - 1] in vowel_info:
vowel_count += 1
max_vowel_count = max(max_vowel_count, vowel_count)
return max_vowel_count
Python
복사