[백준/BOJ] 백준 16472번 : 고냥이
2021. 2. 8. 01:57ㆍ알고리즘 문제풀이
map<char, int> check를 통해 (문자, 개수)를 저장하여 투 포인터(두 포인터)를 이용해 문제를 해결했다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
#include <utility>
#include <set>
#include <string>
#include <queue>
#include <map>
using namespace std;
int n;
string input;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n;
cin >> input;
int left = 0;
int right = 0;
map<char, int> check;
map<char, int>::iterator it;
int result = -1;
while (1)
{
if (check.size() > n) //인식할 수 있는 알파벳 개수를 넘어갔을때
{
check[input[left]]--;
if (check[input[left]] == 0)
{
check.erase(input[left]);
}
left++;
}
else if (right == input.size())
break;
else if (check.size() <= n)
{
it = check.find(input[right]);
if (it == check.end()) //input[right] 알파벳이 check에 없을때
check.insert(make_pair(input[right], 1));
else
(*it).second++;
if (check.size() <= n)
result = max(result, right - left + 1);
right++;
}
}
cout << result;
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 10217번 : KCM Travel (0) | 2021.02.08 |
---|---|
[백준/BOJ] 백준 4195번 : 친구 네트워크 (0) | 2021.02.08 |
[백준/BOJ] 백준 14725번 : 개미굴 (0) | 2021.02.08 |
[백준/BOJ] 백준 2211번 : 네트워크 복구 (0) | 2021.02.08 |
[백준/BOJ] 백준 16638번 : 괄호 추가하기 2 (0) | 2021.02.08 |