9342번 : 염색체
문제)
상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (A, B, C, ..., Z)로만 이루어진 문자열이다. 상근이는 각 염색체가 다음과 같은 규칙을 만족하는지 검사해야 한다.
- 문자열은 {A, B, C, D, E, F} 중 0개 또는 1개로 시작해야 한다.
- 그 다음에는 A가 하나 또는 그 이상 있어야 한다.
- 그 다음에는 F가 하나 또는 그 이상 있어야 한다.
- 그 다음에는 C가 하나 또는 그 이상 있어야 한다.
- 그 다음에는 {A, B, C, D, E, F} 중 0개 또는 1개가 있으며, 더 이상의 문자는 없어야 한다.
문자열이 주어졌을 때, 위의 규칙을 만족하는지 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 테스트 케이스의 개수 T ≤ 20 이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 최대 200개의 알파벳 대문자로 이루어진 문자열이 주어진다.
출력 :
각 테스트 케이스에 대해서, 문제의 규칙을 지키는 문자열인 경우에는 "Infected!"를, 아닌 경우에는 "Good"을 출력한다.
풀이)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
// 9342. 염색체
#include <iostream>
#include <string>
using namespace std;
int alpha['z' - 'a' + 1];
bool check1(string word)
{
char t = word[0];
if(t == 'A'
|| t == 'B'
|| t == 'C'
|| t == 'D'
|| t == 'E'
|| t == 'F' ) return true;
return false;
}
bool check2(string word)
{
bool flag1 = 0;
bool flag2 = 0;
bool flag3 = 0;
for (int i = 0; i < word.length(); i++)
{
if (i > 0 && !(word[i] == 'A' || word[i] == 'F' || word[i] == 'C'))
{
return false;
}
if (word[i] == 'A')
{
flag1 = 1;
}
else if (word[i] == 'F' && flag1)
{
flag2 = 1;
}
else if (word[i] == 'C' && flag1 && flag2)
{
flag3 = 1;
}
}
return flag3;
}
bool check3(string word)
{
char t = word[word.length() - 1];
if (t == 'A'
|| t == 'B'
|| t == 'C'
|| t == 'D'
|| t == 'E'
|| t == 'F') return true;
return false;
}
int main()
{
int t;
cin >> t;
string temp;
while (t--)
{
cin >> temp;
if (check1(temp) && check2(temp) && check3(temp))
{
cout << "Infected!\n";
}
else
{
cout << "Good\n";
}
}
return 0;
}
|
cs |
출처 : https://www.acmicpc.net/problem/9342
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 6497번 : 전력난 (C++) (0) | 2023.09.15 |
---|---|
[백준] 6068번 : 시간 관리하기 (C++) (0) | 2023.09.15 |
[백준] 2698번 : 인접한 비트의 개수 (C++) (1) | 2023.09.15 |
[백준] 11265번 : 끝나지 않는 파티 (C++) (0) | 2023.09.14 |
[백준] 15886번 : 내 선물을 받아줘 2 (C++) (0) | 2023.09.14 |