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

+ Recent posts