[백준] Baekjoon Online Judge
문제
배봉산에 살고 있는 여우는 문자열을 가지고 노는 것을 좋아한다. 여우는 특히 그중에서도 'uospc'라는 모양을 가장 좋아한다!
여우는 자신이 가진 문자열의 순서를 재배열하여 'uospc' 모양을 최대한 많이 만들려고 한다. 예를 들어 'suspicion'이라는 문자열을 재배열하면 'uospcsiin'라는 문자열을 얻을 수 있고. 'processyourpurchase'라는 문자열을 재배열하면 'uospcuospcreyrrhase'라는 문자열을 얻을 수 있다.
알파벳 소문자로만 이루어진 임의의 문자열 가 주어졌을 때. 똑똑한 여우가 이 문자열을 적절히 재배열하여 얻을 수 있는 'uospc'의 최대 개수를 구하여라.
입력
첫 번째 줄에 문자열의 길이인 정수 이 주어진다. ()
두 번째 줄에 영어 알파벳 소문자로만 구성되고 길이가 인 문자열 가 주어진다.
출력
문자열 의 원소들을 적절히 재배열하여 만들 수 있는 'uospc'의 최대 개수를 출력한다.
풀이
#include <iostream>
using namespace std;
int arr[26];
int uospcCnt();
int uospcCnt() {
int cnt = 1000;
string s = "uospc";
for (char c : s) cnt = min(cnt, arr[c - 'a']);
return cnt;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
for (int i = 0; i < n; i++) {
char c;
cin >> c;
arr[c - 'a']++;
}
cout << uospcCnt() << '\n';
return 0;
}
입력 받은 문자열의 각 문자의 수를 센 다음 "uospc"를 구성하는 5개의 문자 중 가장 적은 것을 출력하면 된다.
'백준 > C++' 카테고리의 다른 글
| [Baekjoon/C++] 16237번 - 이삿짐센터 (0) | 2025.09.25 |
|---|---|
| [Baekjoon/C++] 31216번 - 슈퍼 소수 (0) | 2025.09.23 |
| [Baekjoon/C++] 25631번 - 마트료시카 합치기 (0) | 2025.09.15 |
| [Baekjoon/C++] 15687번 - 직사각형 (0) | 2025.09.14 |
| [Baekjoon/C++] 13301번 - 타일 장식물 (0) | 2025.09.09 |
