문제 설명
https://www.acmicpc.net/problem/9342
풀이
문제 해결을 일일히 알파벳 비교를 통해 해결하려면 어렵지만, 정규 표현식을 이용하면 매우 쉬워진다. 문제 조건이 까다롭지 않고 단순히 특정 알파벳 종류에서 0개 또는 1개, 하나 또는 그 이상의 개수를 조건으로 명시하기 때문에 정규 표현식의 '?' 나 '+' 표현을 사용하면 그리 어렵지 않게 표현할 수 있다.
결국 문제의 조건들을 나타내는 정규표현식을 작성하면 "[A-F]?A+F+C+[A-F]?" 이고, 단순히 들어오는 문자열들이 해당 정규표현식과 매칭이 되는지 안되는지 만을 판별하면 된다.
public class Main {
static int T;
static StringBuilder answer = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(br.readLine());
Pattern pattern = Pattern.compile("^[A-F]?A+F+C+[A-F]?$");//정규표현식 등록
for (int i = 0; i < T; i++) {
String testCase = br.readLine();
if(pattern.matcher(testCase).matches())//표현식 비교
answer.append("Infected!\n");
else
answer.append("Good\n");
}
System.out.println(answer.toString());
}
}
결과
'Algorithm > 코드 풀이' 카테고리의 다른 글
프로그래머스: 추석 트래픽 [JAVA] (0) | 2021.11.17 |
---|---|
14906번: 스러피 [JAVA] (0) | 2021.11.02 |
1013번: Contact [JAVA] (0) | 2021.10.26 |
20040번: 사이클 게임 [JAVA] (0) | 2021.10.09 |
12757번: 전설의 JBNU [JAVA] (0) | 2021.10.03 |