HI-ARC
https://www.acmicpc.net/problem/26004
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 1024 MB | 607 | 476 | 409 | 79.883% |
문제
당신은 𝐇𝐈-𝐀𝐑𝐂의 열렬한 팬이다.
따라서 위의 이모지를 만들고 싶어 한다.
현재 N길이의 문자열 S를 가지고 있다.
이모지를 하나 만들기 위해선 𝐇 𝐈 𝐀 𝐑 𝐂 각 문자가 하나씩 필요하다.
이모지를 최대 몇 개 만들 수 있는지 구해보자.
입력
첫째 줄에 문자열 S의 길이 정수 N이 주어진다. (1 ≤ N ≤ 100,000)
둘째 줄에 문자열 S가 주어진다.
문자열 S의 모든 문자는 영어 대문자이다.
출력
첫째 줄에 주어진 문자열 S로 만들 수 있는 이모지의 최대 개수를 출력한다.
예제 입력 1
12 HIARCCRAIHAS
예제 출력 1
2
𝐇가 2개 𝐈가 2개 𝐀가 3개 𝐑이 2개 𝐂가 2개로 𝐇𝐈-𝐀𝐑𝐂 이모지를 2개 만들 수 있다.
예제 입력 2
4 HIAR
예제 출력 2
0
𝐂가 존재하지 않아 𝐇𝐈-𝐀𝐑𝐂를 만들 수 없다.
예제 입력 3
5 HIARC
예제 출력 3
1
출처
University > 홍익대학교 > 2022 홍익대학교 HI-ARC 프로그래밍 경진대회 A번
알고리즘 분류
문자의 최소 개수가 답인 간단한 문제였다.
최소 개수를 구하는 방법만 생각해내면 막히는 부분은 없었다.
DP 문제로 머리가 안 돌아가서 가볍게 풀어본 문제
통과된 코드
#include <iostream> using namespace std; // 0 = H, 1 = I, 2 = A, 3 = R, 4 = C int arr[5]; int main() { int N = 0; char tempC; cin >> N; while (N-- > 0) { cin >> tempC; switch (tempC) { case 'H': arr[0]++; break; case 'I': arr[1]++; break; case 'A': arr[2]++; break; case 'R': arr[3]++; break; case 'C': arr[4]++; break; } } int temp = INT32_MAX; for (int i = 0; i < 5; i++) { // 가장 작은 값 찾기 if (temp > arr[i]) { temp = arr[i]; } } cout << temp; return 0; }