[백준] 9342 : 염색체

ByWindow·2021년 5월 5일
0

Algorithm

목록 보기
26/104
post-thumbnail

📝 문제

PS 꽤나하는 내 여자친구도 어렵다고 인정한 문제다.
풀어나가는 방법은 머릿 속에 그려지는데 그것을 코드화하는 것이 어려웠던 문제.

하지만 많은 시간이 소요된 만큼 첫번째 시도에 통과할 수 있었다.
그리고 여담이지만,

백준 알고리즘 문제를 풀면서 처음으로 맞은 사람 중 1등을 했다...
다른 분들 코드보면서 리뷰할려고 했는데 이런 결과를 보게 될 줄이야..😭

📌 코드

package Baekjoon;

import java.util.*;
import java.io.*;

public class BOJ9342 {

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        /**
         * A,B,C,D,E,F 중 0개 또는 1개로 시작
         * A 다음에는 F, F 다음에는 C 가 와야한다
         * C로 끝날 수도 있고 C 다음에 ABDEF 중 하나가 올 수도 있따
         */
        int t = Integer.parseInt(st.nextToken());
        String start = "ABCDEF";
        char[] element = {'A', 'F', 'C'};
        
        while(t>0){
            t--;
            st = new StringTokenizer(br.readLine());
            String input = st.nextToken();
            boolean check = true;
            
            //첫 글자 검사
            if(start.indexOf(input.charAt(0)) < 0){
                System.out.println("Good");
                continue;
            }
            //A,F,C
            int cur = input.charAt(0) == 'A' ? 0 : 1;
            for(int i = 0; i < element.length; i++){
                if(input.charAt(cur) != element[i]){
                    System.out.println("Good");
                    check = false;
                    break;
                }
                else{
                    for(int j = cur; j < input.length(); j++){
                        if(input.charAt(j) != element[i]){
                            cur = j;
                            break;
                        }
                        else cur++;
                    }
                }
            }
            //마지막 글자
            if(check){
                if(cur == input.length()){
                    System.out.println("Infected!");
                }
                else if(input.length() - cur > 1){
                    System.out.println("Good");
                }
                else{
                    if(start.indexOf(input.charAt(cur)) < 0){
                        System.out.println("Good");
                    }
                    else System.out.println("Infected!");
                }
            }
        }
    }
}
profile
step by step...my devlog

0개의 댓글