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

leeng·4일 전
0

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

처음엔 뭐야 쉬운 문제네~ 하고 풀었는데 자꾸 60% 대에서 틀렸습니다가 나와서 결국 반례 푸는 법을 찾아봤던 문제.
어떤 반례가 있냐하면, 예를 들어 주어진 패턴이 'ab*bc' 이고, 주어진 파일 이름이 'abc'인 경우에 이 파일의 이름은 ab로 시작하는 것도 맞고 bc로 끝나는 것도 맞지만 'ab*bc' 패턴과는 일치하지 않는다.

그래서 단순히 패턴의 시작과 끝 문자열과 파일 이름의 앞뒤 문자열을 비교만 하면 안되고 파일 이름의 길이*을 제외한 패턴 문자열의 길이와 같거나 큰지도 체크해줘야한다.
다음 코드에서 'patternString.length()-1 <= input.length()'에 해당하는 부분이 그것이다.

// 9996 - 한국이 그리울 땐 서버에 접속하지
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        String patternString = br.readLine();
        String[] pattern = patternString.split("\\*");
        for (int i = 0; i < N; i++) {
            String input = br.readLine();
            int i1 = input.indexOf(pattern[0]);
            int i2 = input.lastIndexOf(pattern[1]);

            bw.write(patternString.length()-1 <= input.length() && i1 == 0 && i2 == input.length() - pattern[1].length() ? "DA" : "NE");
            bw.write("\n");
        }
        br.close();
        bw.flush();
        bw.close();
    }
}
profile
기술블로그보다는 기록블로그

0개의 댓글