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!");
}
}
}
}
}