Search
Duplicate
📗

겹치는 건 싫어

주차
문제번호
20922
언어
C++
티어
실버
유형
투 포인터
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

left를 기점으로 right가 돌면서 k를 넘지 않거나 범위를 넘기 전까지 길이 증가

놓쳤던 부분

겹치는 개수가 k를 넘지 않았을 경우, answer가 제대로 업데이트 되지 않음

코드

7588 KB

52 ms

#include <iostream> #include <unordered_map> #include <vector> #include <algorithm> using namespace std; int main(void) { int n, k; vector<int> v; unordered_map<int, int> m; int leftIndex = 0, rightIndex = 0; int answer = 0, tmp = 0; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);ㅁ cin >> n >> k; v.resize(n); for (int i = 0; i < n; i++) cin >> v[i]; while (leftIndex < n) { while (rightIndex < n) { if (m[v[rightIndex]] == k) { answer = max(answer, tmp); m[v[leftIndex]]--; tmp--; break ; } else if (m[v[rightIndex]]) m[v[rightIndex]]++; else m[v[rightIndex]] = 1; tmp++; rightIndex++; } if (rightIndex == n) { answer = max(answer, tmp); break ; } leftIndex++; } cout << answer; return (0); }
C++
복사