반응형
1. 문제
- 문자열 s와 정수 k가 주어질 때, k 길이 문자열 내에 가장 많은 모음이 등장하는 횟수를 반환하라.
2. 해결
function maxVowels(s: string, k: number): number {
const vowels = 'aeiou';
let max = Number.MIN_SAFE_INTEGER;
let count = 0;
let left = 0, right = 0;
while(right < s.length) {
if(vowels.includes(s[right])) count++;
if(right - left === k -1) {
max = Math.max(max, count)
if(vowels.includes(s[left++])) count--;
}
right++;
}
return max;
};
- 연속된 구간 내 모음의 수가 중요한 것이므로 두 포인터는 앞에서 부터 시작.
- 모음을 만나면 count를 증가시키며 right 증가.
- k길이에 도달하면, max를 갱신하고 left 감소.
- 이 때, left가 모음이면 count도 감소.