Search
🙊

BOJ 20922 <겹치는 건 싫어>

주어진 조건만큼의 중복 수 가 있는지 체크해 가면서 덱에 넣어준 풀이이다. 굳이 덱을 안사용하고 두포인트로 잡아서 풀었어도 될거같다.
#include <iostream> #include <deque> #include <vector> #include <cmath> using namespace std; // 겹치는 건 싫어 int main () { int n, k, answer = 0, input; cin >> n >> k; vector<int> vis(100001, 0); deque<int> dq; for (int i = 0; i < n; i++) { cin >> input; vis[input]++; dq.push_back(input); while (vis[input] > k) { vis[dq.front()]--; dq.pop_front(); } answer = max(answer, (int)dq.size()); } cout << answer; }
C++
복사