https://www.acmicpc.net/problem/1522
#문제 간단 정리
슬라이딩 윈도우/ 투포인터
#문제 해결 방법
중요한건 a의 개수만큼 윈도우를 만들어서
윈도우 안에 담긴 b 만큼 교체를 해주는 숫자가 최소가 되는 때를 찾는 것이다.
a의 개수만큼의 윈도우를 찾는다는 발상이 조금 어려울 수도 있을 것 같다.
#전체 코드
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <climits>
using namespace std;
int main() {
string s;
cin >> s;
int n = s.length();
int aCount = 0;
int bCount = 0;
int minBCount = INT_MAX;
for (char c : s) {
if (c == 'a') {
aCount++;
}
}
s += s;
for (int i = 0; i < n; i++) {
int j =i + aCount-1;
for (int k = i; k <= j; k++) {
if (s[k] == 'b') {
bCount++;
}
}
minBCount = min(bCount, minBCount);
bCount = 0;
}
cout << minBCount << '\n';
}
'[백준] > C++' 카테고리의 다른 글
백준 6123번 O Those Fads [C++] (0) | 2024.07.27 |
---|---|
백준 1059번 좋은 구간 [C++] (0) | 2024.07.25 |
백준 12904번 A와 B [C++] (1) | 2024.07.23 |
백준 31962번 밤양갱 [C++] (3) | 2024.07.23 |
백준 8972번 미친 아두이노 [C++] (0) | 2024.07.18 |