[백준 26004] HI-ARC (C#, C++) - soo:bak
작성일 :
문제 링크
설명
문자열을 입력받은 후, 해당 문자열에서의 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;
}