백준 26004번 (HI-ARC, C++) [BAEKJOON]

HI-ARC

https://www.acmicpc.net/problem/26004

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초1024 MB60747640979.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;
}

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤