지우너
[코드트리] 겹치는 원소가 적은 부분 수열 C++ 본문
문제
코드
#include <iostream>
#include <unordered_map>
using namespace std;
const int MAX_N = 100001;
int n, k;
int num[MAX_N];
unordered_map<int,int> um;
int main() {
cin >> n >> k;
for(int i=0; i<n; ++i){
cin >> num[i];
}
int r=0, answer=1;
for(int l=0; l<n; ++l){
// um에 num[r]이 없거나 k개보다 적을 경우
while(r<n && (um.find(num[r])==um.end()|| um[num[r]]<k)){
um[num[r]]++;
r++;
}
answer=max(answer, r-l);
um[num[l]]--;
}
cout << answer << '\n';
return 0;
}
'Problem Solving' 카테고리의 다른 글
[코드트리] 숫자의 개수 C++ (0) | 2024.08.27 |
---|---|
[코드트리] 숫자 빠르게 찾기 C++ (0) | 2024.08.27 |
[코드트리] 서로 다른 k개의 문자 C++ (0) | 2024.08.25 |
[코드트리] 중복되지 않는 가장 긴 문자열 C++ (0) | 2024.08.25 |
[코드트리] 0에 가장 가까운 합 C++ (0) | 2024.08.24 |