티스토리 뷰
728x90
:D 문제
문제
상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (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"을 출력한다.
Baekjoon
:D 풀이 방법
나는 아래와 같이 정규표현식을 사용해서 문제를 해결하였다.
조건은 아래와 같다.
- 문자열은 {A, B, C, D, E, F} 중 0개 또는 1개로 시작해야 한다.
첫번째 조건은 ^[ABCDEF]? 로 해결하였다. 먼저 ^[]는 괄호 안에 있는 문자로 시작하고 ?는 0또는 1개 이상 반복을 의미한다.
다음 조건은 아래와 같다.
- 그 다음에는 A가 하나 또는 그 이상 있어야 한다.
- 그 다음에는 F가 하나 또는 그 이상 있어야 한다.
- 그 다음에는 C가 하나 또는 그 이상 있어야 한다.
A+F+C는 해당 문자열이 1개 이상 반복됨을 의미한다.
그리고 마지막 조건은 아래와 같은데, 마지막 문자가 [A, B, C, D, E, F] 중 하나임을 의미한다.
- 그 다음에는 {A, B, C, D, E, F} 중 0개 또는 1개가 있으며, 더 이상의 문자는 없어야 한다.
[ABCDEF]?$는 괄호안에 문자가 0또는 1개 반복되며, $앞에 문자로 끝나는지를 의미한다.
:D 작성 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution9342H {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine().trim());
StringBuilder answer = new StringBuilder();
String patterns = "^[ABCDEF]?A+F+C+[ABCDEF]?$";
for (int testCase = 1; testCase <= T; testCase++) {
String input = br.readLine();
answer.append(input.matches(patterns) ? "Infected!" : "Good").append("\n");
}
System.out.print(answer.toString().trim());
}
}
마무리
오랜만에 정규표현식 문제를 다시 풀어봤다. 예전에는 바로바로 풀 수 있었는데 오랜만에 풀어보려고 하니까 헷갈리는 부분이 많았다.
정규표현식을 써서 해결하는 방법도 까먹지 않게 계속 풀이해봐야겠다.
728x90
'ALGORITHM > BAEKJOON' 카테고리의 다른 글
[BAEKJOON] 6603. 로또(JAVA) (0) | 2022.08.15 |
---|---|
[BAEKJOON] 1012. 유기농 배추(JAVA) (0) | 2022.08.15 |
[BAEKJOON] 2606. 바이러스(JAVA) (0) | 2022.08.12 |
[BAEKJOON] 16296. 배열 돌리기 1 (0) | 2022.08.12 |
[BAEKJOON] 11286. 절댓값 힙 (JAVA) (0) | 2022.08.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크