백준 스페셜 저지

KIMYEONGJUN·2025년 12월 21일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

두 문자열 A와 B가 한 줄에 하나씩 주어진다.
두 문자열 길이의 합은 20만을 넘지 않는다.
세 번째 줄에 사용자가 출력한 문자열이 주어진다.
입력으로 주어지는 모든 문자열은 알파벳 소문자로만 이루어져 있고, 길이는 20만을 넘지 않는다.

답이 맞으면 YES, 틀리면 NO를 출력한다.

내가 이 문제를 보고 생각해본 부분

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 이 줄은 콘솔로부터 입력을 받기 위한 BufferedReader 객체를 생성한다.
System.in (표준 입력)을 InputStreamReader로 감싸서 문자 입력 스트림으로 변환한 후, 이를 다시 BufferedReader로 감싸서 효율적인 문자열 읽기 준비를 마친다.
String A = br.readLine(); String B = br.readLine(); String U = br.readLine(); br.readLine() 메서드를 사용해 프로그램은 사용자로부터 세 줄의 텍스트를 순서대로 읽어 들인다. 
첫 번째 줄은 문자열 A에, 두 번째 줄은 B에, 세 번째 줄은 U에 각각 저장된다. 
A와 B는 원본 문자열이며, U는 사용자가 제출한 답안 문자열이다.
if(A.contains(U) && B.contains(U)) { ... } else { ... }
A.contains(U): 문자열 A 안에 U가 부분 문자열로 포함되어 있는지 확인한다. 
포함되어 있다면 true, 아니면 false를 반환한다.
B.contains(U): 문자열 B 안에 U가 부분 문자열로 포함되어 있는지 확인한다.
&&: 두 조건(A.contains(U)와 B.contains(U))이 모두 true일 때만 if 블록 안의 코드가 실행된다. 
즉, 사용자의 답안 U가 원본 문자열 A와 B 모두의 부분 문자열인 경우에만 참이 된다.
만약 두 조건이 모두 참이면 System.out.println("YES");를 통해 "YES"를 출력한다.
두 조건 중 하나라도 거짓이거나 둘 다 거짓이면 else 블록으로 이동하여 System.out.println("NO");를 통해 "NO"를 출력한다.
br.close(); 마지막으로, 사용한 BufferedReader 자원을 해제한다.

코드로 구현

package baekjoon.baekjoon_31;

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

// 백준 9253번 문제
public class Main1243 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String A = br.readLine(); // 첫 번째 문자열 A를 읽습니다.
        String B = br.readLine(); // 두 번째 문자열 B를 읽습니다.
        String U = br.readLine(); // 사용자가 출력한 문자열 U를 읽습니다.

        // U가 A의 부분 문자열인지 확인하고, 동시에 U가 B의 부분 문자열인지 확인합니다.
        // String.contains() 메서드는 해당 문자열이 다른 문자열을 포함하는지 여부를 반환합니다.
        if (A.contains(U) && B.contains(U)) {
            // 두 조건 모두 만족하면 YES를 출력합니다.
            System.out.println("YES");
        } else {
            // 하나라도 만족하지 않으면 NO를 출력합니다.
            System.out.println("NO");
        }

        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글