https://www.acmicpc.net/problem/9342
9342번: 염색체
상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (A, B, C, ..., Z)로만 이루어진 문자열이다. 상근이는 각 염색체가 다음과 같은 규칙
www.acmicpc.net
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int t;
cin >> t;
for (int test = 0; test < t; test++) {
string s;
bool ans = true;
bool isStart, isEnd;
cin >> s;
//맨 처음 값과 맨 끝 값 확인
if (s[0] - 'A' > 5) {
ans = false;
}
if (s[s.size()-1] - 'A' > 5) {
ans = false;
}
//그 사이의 값 확인
for (int i = 1; i < s.size()-1; i++) {
if (!ans) {
break;
}
switch (s[i]) {
case 'A':
if (s[i - 1] - 'A' == 0) {
continue;
}
break;
case 'C':
if (s[i - 1] - 'A' != 2 && s[i - 1] - 'A' != 5) {
ans = false;
}
break;
case 'F':
if (s[i - 1] - 'A' != 0 && s[i - 1] - 'A' !=5) {
ans = false;
}
break;
default:
ans = false;
}
}
if (ans) {
cout << "Infected!" << "\n";
} else {
cout << "Good" << "\n";
}
}
return 0;
}
간단한 구현문제였다
우선 맨 앞과 맨 뒤에 A-F 중 한 문자가 나오는 지 확인한다.
이후 그 사이의 문자를 반복문을 돌면서 조건에 맞는지 확인한다.
1. 현재 문자가 A일 경우: 이 이전문자가 A여야함
2. 현재 문자가 F일 경우: 이 이전문자가 A이거나 F여야함
3. 현재 문자가 C일 경우: 이 이전문자가 F이거나 C여야함
위의 조건 중 하나라도 맞지 않는다면 false, 모두 부합한다면 true를 반환한다.
'Coding Test' 카테고리의 다른 글
백준 2467 용액 (1) | 2024.04.01 |
---|---|
백준 5639 이진 검색 트리 (2) | 2024.03.31 |
백준 15685 드래곤 커브 (1) | 2024.03.28 |
백준 1277 발전소 설치 (0) | 2024.03.27 |
백준 16139 인간-컴퓨터 상호작용 (0) | 2024.03.26 |