본문 바로가기
Algorithm/백준 자바

백준 9996 자바

by 눈오는1월 2024. 1. 9.
728x90

<문제>

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

 

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

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

www.acmicpc.net

 

<풀이>

*를 기준으로 문자를 나눠서 저장한다.( * 앞부분을 front 뒷부분을 back으로 저장)

문제에서 NE가 뜰 경우의 수부터 생각을 한다. 첫 번째로 패턴에서 *을 제외한 길이보다 파일 이름이 더 짧으면 NE가 출력이 된다. 또 front와 * 앞까지의 글자가 다를 경우 NE를 출력하고 패턴에서 * 뒤부터 back까지 글자가 다를 경우 NE가 출력이 된다. 위 경우의 수에 포함되지 않으면 DA가 출력한다.

위 풀이를 코드로 작성하면 된다.

 

나는 빠른 풀이를 위해 NE와 DA를 체크하는 함수를 따로 구현을 해서 NE가 나오는 경우의수가 한 번만 나오면 뒤에는 확인 안 하고 바로 NE가 출력될 수 있도록 코드를 작성했다.

<코드>

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

public class Main {

    public static char[] arr;
    public static int point;
    public static char[] front;
    public static char[] back;

    public static void main(String[] args)throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        arr = br.readLine().toCharArray();
        point = 0;
        for(int i = 0; i < arr.length; i++) {
            if(arr[i]=='*'){
                point = i;
                break;
            }
        }
        front = new char[point];
        back = new char[arr.length - point - 1];
        for(int i = 0; i < point; i++) {
            front[i] = arr[i];
        }
        for(int i = 0; i < back.length; i++) {
            back[i] = arr[point+1+i];
        }

        for(int i = 0; i < n; i++) {
            char[] arr2 = br.readLine().toCharArray();
            System.out.println(check(arr2));
        }
    }

    public static String check(char[] arr2) {
        if(arr.length-1 > arr2.length) {
            return "NE";
        }
        for(int i = 0; i < front.length; i++) {
            if(arr2[i] != front[i]) {
                return "NE";
            }
        }
        for(int i = 0; i < back.length; i++) {
            if(arr2[arr2.length- back.length + i] != back[i]) {
                return "NE";
            }
        }
        return "DA";
    }

}
728x90

'Algorithm > 백준 자바' 카테고리의 다른 글

백준 4949 자바  (0) 2024.01.26
백준 1620 자바  (0) 2024.01.09
백준 11655 자바  (1) 2024.01.03
백준 1159 자바  (0) 2024.01.03
백준 10988 자바  (1) 2024.01.03