백준 관공... 어찌하여 목만 오셨소...

KIMYEONGJUN·2025년 9월 27일
0
post-thumbnail

문제

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

첫째 줄에 용의자의 수를 뜻하는 정수 N이 주어진다. (1 ≤ N ≤  1000)
둘째 줄부터 N개의 줄에 걸쳐 용의자의 이름이 한 줄에 하나씩 주어진다.
이름은 영어 대문자로만 이루어져 있으며, 이름의 길이는 100글자를 넘지 않는다.
항상 답이 유일하게 존재하는 경우만 입력으로 주어진다.

첫째 줄에 관우를 죽인 범인의 이름을 출력한다.

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

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
사용자로부터 입력을 받기 위해 BufferedReader 객체를 생성한다. 
System.in은 표준 입력 스트림(일반적으로 키보드 입력)을 나타내며, 이를 InputStreamReader로 문자로 변환하고, 다시 BufferedReader로 감싸서 효율적인 문자열 입력을 가능하게 한다.
int N = Integer.parseInt(br.readLine());
첫째 줄에서 용의자의 수 N을 읽어온다.
br.readLine()으로 한 줄을 문자열로 읽은 다음, Integer.parseInt()를 사용하여 이 문자열을 정수(int)형으로 변환하여 N 변수에 저장한다.
for (int i = 0; i < N; i++) { ... }
N명의 용의자 이름을 모두 확인해야 하므로, 0부터 N−1까지 N번 반복하는 for 반복문을 사용한다.
String suspectName = br.readLine();
반복문 안에서 br.readLine()을 호출하여 매번 다음 용의자의 이름을 한 줄씩 읽어와 suspectName 변수에 문자열로 저장한다.
if (suspectName.contains("S")) { ... }
읽어온 suspectName에 대문자 'S'가 포함되어 있는지 확인하는 조건문이다. 
String 클래스의 contains() 메서드는 특정 문자열(여기서는 "S")이 현재 문자열에 포함되어 있으면 true를 반환하고, 아니면 false를 반환한다.
System.out.println(suspectName);
만약 suspectName에 'S'가 포함되어 있다면, 해당 suspectName을 표준 출력(콘솔)에 출력한다.
return;
문제 조건에서 항상 답이 유일하게 존재한다고 했으므로, 범인을 찾아서 출력했으면 더 이상 다른 이름을 확인할 필요가 없다. 
return; 문을 사용하여 main 메서드를 즉시 종료하고 프로그램도 끝낸다.
br.close();
모든 입력을 처리한 후, BufferedReader 객체를 닫아 자원을 해제한다.

코드로 구현

package baekjoon.baekjoon_30;

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

// 백준 30501번 문제
public class Main1158 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 용의자의 수 N을 읽어옵니다.
        int N = Integer.parseInt(br.readLine());

        // N번 반복하여 용의자 이름을 하나씩 읽습니다.
        for(int i = 0; i < N; i++) {
            String suspectName = br.readLine(); // 용의자 이름을 읽습니다.

            // 만약 이름에 'S'가 포함되어 있다면 (대문자 'S'를 찾습니다).
            if(suspectName.contains("S")) {
                System.out.println(suspectName); // 그 이름을 출력합니다.
                return; // 문제에서 항상 답이 유일하게 존재한다고 했으므로, 찾으면 바로 종료합니다.
            }
        }

        br.close(); // BufferedReader를 닫습니다.
    }
}

마무리

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

profile
Junior backend developer

0개의 댓글