지우너
[코드트리] 서로 다른 k개의 문자 C++ 본문
문제
코드
#include <iostream>
#include <unordered_map>
using namespace std;
string str;
int k;
unordered_map<char, int> um;
bool CanInsert(char c){
// 1. 이미 um에 있는 문자인 경우
if(um.find(c)!=um.end() && um.size()<=k) return true;
// 2. 새로운 문자인 경우
if(um.find(c)==um.end() && um.size()<k) return true;
return false;
}
int main() {
cin >> str >> k;
int n=str.length();
int r=0, answer=0;
for(int l=0; l<n; ++l){
while(r<n && CanInsert(str[r])){
um[str[r]]++;
r++;
}
if(r<l) break;
answer = max(answer, r-l);
if(um[str[l]]==1) um.erase(str[l]);
else um[str[l]]--;
}
cout << answer << '\n';
return 0;
}
'Problem Solving' 카테고리의 다른 글
[코드트리] 숫자 빠르게 찾기 C++ (0) | 2024.08.27 |
---|---|
[코드트리] 겹치는 원소가 적은 부분 수열 C++ (0) | 2024.08.26 |
[코드트리] 중복되지 않는 가장 긴 문자열 C++ (0) | 2024.08.25 |
[코드트리] 0에 가장 가까운 합 C++ (0) | 2024.08.24 |
[코드트리] 바구니 안의 사탕 C++ (0) | 2024.08.23 |