Search
moon
sun
📗

겹치는 건 싫어

주차
문제번호
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++
복사