Search

Maximum Number of Vowels in a Substring of Given Length

문제 설명 : 제공된 문자열에서 k 길이만큼 연속된 범위를 확인하였을 때, 가장 모음이 많은 경우 몇개의 모음이 있는지 반환
풀이 방법
첫 탐색 범위의 정보를 미리 구해둔다.
이후 가장 앞/뒤 정보만 변경되기 때문에 아래와 같이 진행한다.
신규 탐색 범위의 직전(이전 탐색 범위의 첫 문자)가 모음이라면, count 감소
신규 탐색 범위의 가장 마지막 문자(새로 추가된 문자)가 모음이라면 count 증가
시간복잡도 : O(N)O(N)
성공 코드
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
복사