🌞Algorithm/πŸ”₯Baekjoon

[Baekjoon] 9342_염색체

λΏŒμ•Ό._. 2024. 8. 27. 15:00
문제(좜처: https://www.acmicpc.net/problem/9342)

< 염색체 >

 

문제 풀이 

 

μ •κ·œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•˜λ©΄ 문제λ₯Ό μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆμ„ 것 κ°™μ•„ μ •κ·œ ν‘œν˜„μ‹μ„ μ°Ύμ•„ μ‚¬μš©ν•˜μ—¬ ν•΄κ²°ν–ˆλ‹€.

 

이 λ¬Έμ œμ—μ„œ μ‚¬μš©ν•œ μ •κ·œ ν‘œν˜„μ‹ κΈ°ν˜ΈλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

^ : μ‹œμž‘
$ : 끝
[] : κ΄„ν˜Έ μ•ˆμ˜ λ¬Έμžκ°€ μžˆλŠ”μ§€ 확인
- : μ‚¬μ΄μ˜ 문자 ν˜Ήμ€ 숫자
? : μ•žμ˜ ν‘œν˜„μ‹μ΄ 0 or 1개
+ : μ•žμ˜ ν¬ν˜„μ‹μ΄ 1개 이상

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Pattern;

public class _9342_ { // 염색체

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int T = Integer.parseInt(bf.readLine());

		for (int i = 0; i < T; i++) {
			String str = bf.readLine();

			if (Pattern.matches("^[A-F]?A+F+C+[A-F]?$", str)) {
				bw.write("Infected!\n");
			} else {
				bw.write("Good\n");
			}
		}
		bw.flush();
	}
}

 

λ³€μˆ˜)
T : ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 수
str : λ¬Έμžμ—΄

 

ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 수λ₯Ό μž…λ ₯λ°›μ•„ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 수만큼 λ¬Έμžμ—΄μ„ μž…λ ₯λ°›μ•„ μ •κ·œ ν‘œν˜„μ‹κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•œλ‹€.

 

λ¬Έμžμ—΄ μ‹œμž‘μ΄ {A, B, C, D, E, F} 쀑 0개 λ˜λŠ” 1κ°œμ΄λ―€λ‘œ -> ^[A-F]?둜 λ³€ν™˜ν•œλ‹€.

κ·Έλ‹€μŒ Aκ°€ 1개 이상, Fκ°€ 1개 이상, Cκ°€ 1개 μ΄μƒμ΄λ―€λ‘œ -> A+F+C+둜 λ³€ν™˜ν•œλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ {A, B, C, D, E, F} 쀑 0개 λ˜λŠ” 1개 μ΄λ―€λ‘œ -> [A-F]?$둜 λ³€ν™˜ν•œλ‹€.

 

μ΅œμ’… μ •κ·œ ν‘œν˜„μ‹ ^[A-F]?A+F+C+[A-F]?$와 μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•œλ‹€.