백준 30804번 : 과일 탕후루

M1ndCon·2024년 7월 1일
0

Algorithm

목록 보기
15/32

  • Solved.ac 기준 : 실버 2
  • 사용언어 C++

문제 해석 및 풀이

  • 배열을 만들어서 과일 종류가 두 개를 초과하면 윈도우의 왼쪽 끝을 오른쪽으로 이동시켜 과일 종류를 줄임
  • 최대 길이 저장
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;

int main() {
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);

    int n;
    cin >> n;
    vector<int> fruits(n);

    for (int i = 0; i < n; i++) {
        cin >> fruits[i];
    }

    unordered_map<int, int> fruitCount;
    int maxLen = 0;
    int left = 0;

    for (int right = 0; right < n; right++) {
        fruitCount[fruits[right]]++;

        while (fruitCount.size() > 2) {
            fruitCount[fruits[left]]--;
            if (fruitCount[fruits[left]] == 0) {
                fruitCount.erase(fruits[left]);
            }
            left++;
        }

        maxLen = max(maxLen, right - left + 1);
    }

    cout << maxLen;

    return 0;
}
profile
게임 개발자 지망생

0개의 댓글