알고리즘/백준

[백준 9996] 한국이 그리울 땐 서버에 접속하지

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

 

9996번: 한국이 그리울 땐 서버에 접속하지

총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다.

www.acmicpc.net

 

1. 유형

문자열

 

2. 풀이

 

1. 별표 기준으로 좌우 나누기
2-1 좌우길이가 비교문자열의 초과인 경우 NE 
2-2. 이하인 경우 앞뒤 비교
3-1. 좌우가 비교 문자열과 일치하면 DA
3-2. 불일치하면 NE

 

3. 코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = stoi(st.nextToken());
		st = new StringTokenizer(br.readLine());
		String arr[] = st.nextToken().split("\\*");
		StringBuilder sb = new StringBuilder();
		while(N-->0) {
			st = new StringTokenizer(br.readLine());
			String str = st.nextToken();
			if(arr[0].length()+arr[1].length() > str.length()) {
				sb.append("NE").append("\n");
				continue;
			}
			String front =str.substring(0, arr[0].length());
			String back = str.substring(str.length()-arr[1].length(), str.length());
			if(front.equals(arr[0]) && back.equals(arr[1])) {
				sb.append("DA").append("\n");
			}else {
				sb.append("NE").append("\n");
			}
		}		
		System.out.println(sb.toString());
	}

	static int stoi(String s) {
		return Integer.valueOf(s);
	}
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1446 지름길  (0) 2022.03.06
[백준 1251] 단어 나누기  (0) 2022.03.03
백준 16439 - 치킨치킨치킨  (0) 2021.11.10
백준 16439 - 치킨치킨치킨  (0) 2021.11.10
백준 15970 - 화살표 그리기  (0) 2021.11.07