Algorithm/백준 알고리즘

백준_9996 한국이 그리울 땐 서버에 접속하지(자바) / 문자열

미스터로즈 2021. 11. 15. 11:19

시간&메모리 제한

 

문제

 

입력&출력

 

문제풀이

package com.Back;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Back_9996 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		
		String pattern = br.readLine();
		String[] patterns = pattern.split("\\*");
		
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < N; i++) {
			String tmp = br.readLine();
			
			if(tmp.length()<pattern.length()-1) {
				sb.append("NE\n");
				continue;
			}
			
			if(tmp.substring(0, patterns[0].length()).equals(patterns[0])&&
					tmp.substring(tmp.length()-patterns[1].length()).equals(patterns[1])) {
				sb.append("DA\n");
			}else {
				sb.append("NE\n");
			}
		}
		System.out.println(sb);
	}
}

 

※ 내 생각

이 문제는 문자열을 이용하는 문제입니다.

이 문제를 해결하기 위해서 "*"를 기준으로 나눠줍니다.
"*"같은 특수 문자를 split에서 사용하기 위해서는 "\\*"를 사용합니다.

비교하기에 앞서 pattern길이의 -1은 주어진 문자열 보다 크면 안되기 때문에 예외처리를 해줍니다.

각각의 문자열에 대해서 앞과 뒤에 대한 비교를 해줍니다.