반응형
https://www.acmicpc.net/problem/16472
16472번: 고냥이
고양이는 너무 귀엽다. 사람들은 고양이를 너무 귀여워했고, 결국 고양이와 더욱 가까워지고 싶어 고양이와의 소통을 위한 고양이 말 번역기를 발명하기로 했다. 이 번역기는 사람의 언어를 고
www.acmicpc.net
[ 문제풀이 ]
1. N과 문자열을 입력받고, 문자의 개수를 저장할 cnt 배열과 총 문자 종류의 개수를 저장할 ch배열을 초기화합니다.
2. s = 0, e = 0으로 초기화한 후 e < str.size()인 동안 반복하면서 총 문자 종류의 개수가 N개보다 적거나 같으면 ans에 문자열의 길이의 최댓값을 저장하고, e++, cnt++, 처음 나오는 문자라면 ch++를 해주고, N개보다 많다면 cnt--, s++, 해당 문자의 개수가 0개라면 ch--를 해줍니다.
3. ans를 출력합니다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include<iostream> #include<string> using namespace std; int N; string str; int cnt[26]; int ch; int ans; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N; cin >> str; int s = 0; int e = 0; cnt[str[0] - 'a']++; ch++; ans = 1; while (e < str.size()) { if (ch <= N) { ans = max(ans, e - s + 1); e++; if (cnt[str[e] - 'a'] == 0) ch++; cnt[str[e] - 'a']++; } else { cnt[str[s] - 'a']--; if (cnt[str[s] - 'a'] == 0) ch--; s++; } } cout << ans; } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 20182번 - 골목 대장 호석 - 효율성 1 (C++) (0) | 2023.08.14 |
---|---|
[ 백준 ] 20168번 - 골목 대장 호석 - 기능성 (C++) (0) | 2023.08.13 |
[ 백준 ] 9024번 - 두 수의 합 (C++) (0) | 2023.08.11 |
[ 백준 ] 3079번 - 입국심사 (C++) (0) | 2023.08.10 |
[ 백준 ] 18114번 - 블랙 프라이데이 (C++) (0) | 2023.08.09 |