본문 바로가기

Algorithm/코드 풀이

9342번: 염색체 [JAVA]

문제 설명

https://www.acmicpc.net/problem/9342

 

9342번: 염색체

상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (A, B, C, ..., Z)로만 이루어진 문자열이다. 상근이는 각 염색체가 다음과 같은 규칙

www.acmicpc.net

 

풀이

 문제 해결을 일일히 알파벳 비교를 통해 해결하려면 어렵지만, 정규 표현식을 이용하면 매우 쉬워진다. 문제 조건이 까다롭지 않고 단순히 특정 알파벳 종류에서 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