작성일 :

문제 링크

26004번 - HI-ARC

설명

문자열을 입력받은 후, 해당 문자열에서의 H , I , A , R , C 문자의 개수를 세어
문제의 조건에 따라 사칙연산을 진행하여 풀이하는 문제입니다.

각각 문자가 모두 최소 1개씩 존재해야 이모지 1개를 만들 수 있으므로,
입력받은 문자열에서 각 문자의 개수를 세면, 가장 작은 문자의 숫자를 기준으로 하여
만들 수 있는 이모지의 최소 개수를 판단할 수 있습니다.


Code

[ C# ]

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
45
46
namespace Solution {
  class Program {

    enum Character : int {
      H,
      I,
      A,
      R,
      C,
      _,
    }

    static void Main(string[] args) {

      int[] sieve = {0, 0, 0, 0, 0};

      int.TryParse(Console.ReadLine(), out int n);

      string? input = Console.ReadLine();
      char[]? arrChar = input?.ToCharArray();

      for (int i = 0; i < arrChar?.Length; i++) {
        switch (arrChar[i]) {
          case 'H' :
            sieve[(int)Character.H]++;
            break ;
          case 'I' :
            sieve[(int)Character.I]++;
            break ;
          case 'A' :
            sieve[(int)Character.A]++;
            break ;
          case 'R' :
            sieve[(int)Character.R]++;
            break ;
          case 'C' :
            sieve[(int)Character.C]++;
            break ;
        }
      }

      Console.WriteLine(sieve.Min());

    }
  }
}



[ C++ ]

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
#include <bits/stdc++.h>

using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  enum {
    H,
    I,
    A,
    R,
    C,
    _,
  };

  vector<int> sieve(5, 0);

  int n; cin >> n;
  string str; cin >> str;

  for (int i = 0; i < n; i++) {
    if (str[i] == 'H') sieve[H]++;
    else if (str[i] == 'I') sieve[I]++;
    else if (str[i] == 'A') sieve[A]++;
    else if (str[i] == 'R') sieve[R]++;
    else if (str[i] == 'C') sieve[C]++;
  }

  cout << *min_element(sieve.begin(), sieve.end()) << "\n";

  return 0;
}