본문 바로가기

Coding Test

백준 9342 염색체

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