반응형
문제
문제 링크 : https://www.acmicpc.net/problem/1013
문제
상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (A, B, C, ..., Z)로만 이루어진 문자열이다. 상근이는 각 염색체가 다음과 같은 규칙을 만족하는지 검사해야 한다.
- 문자열은 {A, B, C, D, E, F} 중 0개 또는 1개로 시작해야 한다.
- 그 다음에는 A가 하나 또는 그 이상 있어야 한다.
- 그 다음에는 F가 하나 또는 그 이상 있어야 한다.
- 그 다음에는 C가 하나 또는 그 이상 있어야 한다.
- 그 다음에는 {A, B, C, D, E, F} 중 0개 또는 1개가 있으며, 더 이상의 문자는 없어야 한다.
문자열이 주어졌을 때, 위의 규칙을 만족하는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T ≤ 20 이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 최대 200개의 알파벳 대문자로 이루어진 문자열이 주어진다.
출력
각 테스트 케이스에 대해서, 문제의 규칙을 지키는 문자열인 경우에는 "Infected!"를, 아닌 경우에는 "Good"을 출력한다.
풀이
역시 이전문제와 마찬가지로 정규식으로 쉽게 해결할 수 있는 문제였다.
이번에 사용한 표현식은 (+
: 1개 이상), (?
: 0 or 1개)를 주로 사용해서 해결하였다.
코드(JAVA)
import java.io.*;
import java.util.*;
public class Main {
static int N;
static String no = "Good";
static String yes = "Infected!";
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
for(int i=0; i<N; i++){
if(parser(br.readLine())){
System.out.println(yes);
}else{
System.out.println(no);
}
}
}
public static boolean parser(String s){
String pattern = "^[A-F]?A+F+C+[A-F]?$";
boolean val = s.matches(pattern);
return val;
}
}
import java.io.*;
import java.util.*;
public class Main {
static int N;
static String no = "Good";
static String yes = "Infected!";
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
for(int i=0; i<N; i++){
if(parser(br.readLine())){
System.out.println(yes);
}else{
System.out.println(no);
}
}
}
public static boolean parser(String s){
String pattern = "^[A-F]?A+F+C+[A-F]?$";
boolean val = s.matches(pattern);
return val;
}
}
결과
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
123. 순위 (프로그래머스)[JAVA] (0) | 2021.11.18 |
---|---|
122. 브라이언의 고민 (프로그래머스) [JAVA] (0) | 2021.11.17 |
120. Contact (백준 1013) [JAVA] (0) | 2021.10.25 |
119. 앱 (백준 7579) [JAVA] (0) | 2021.10.12 |
118. 사이클 게임 (백준 20040) [JAVA] (0) | 2021.10.11 |
Comment