본문 바로가기
알고리즘

[JAVA]백준 9996번: 한국이 그리울 땐 서버에 접속하자

by Kwoncorin 2020. 11. 5.
728x90

www.acmicpc.net/problem/9996

 

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

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

www.acmicpc.net

 

1. 문제 설명

 

주어진 패턴과 일치하는 문자열인지 아닌지 확인하면 된다.

 

*을 기준으로 앞 문자열과 뒷 문자열로 나눈다.

 

그 후 첫 번째, 새로 입력받은 문자열이 기준 문자열에서 *을 뺀 길이보다 짧은지 확인한다.

 

만약 짧다면, 이는 패턴이 일치하지 않는 것이기에 NE를 출력하면 된다.

 

두 번째는, 앞에서 자른 기준 문자열의 앞 문자열, 뒷 문자열과 새로 입력받은 문자열이 일치하는지 확인하면 된다.

 

생각한 대로 구현하면 되는 쉬운 문제이다.

 

2. 코드

 

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Main {


    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);

        int num=scan.nextInt();

        String base=scan.next();

        int start_index=base.indexOf("*");



        String base_start=base.substring(0,start_index);
        String base_end=base.substring(start_index+1);

        int base_start_length=base_start.length();
        int base_end_length=base_end.length();

        //*을 뺀 string 길이.
        int base_length=base.length()-1;

        for(int i=0;i<num;i++){
            String temp=scan.next();

            int temp_length=temp.length();

            if(temp_length<base_length){
                System.out.println("NE");
            }else{
                String temp_start=temp.substring(0,base_start_length);
                String temp_end=temp.substring(temp_length-base_end_length);

                if(temp_start.equals(base_start)&&temp_end.equals(base_end))
                    System.out.println("DA");
                else
                    System.out.println("NE");
            }


        }

        scan.close();

        return;
    }



}
728x90