코딩 테스트

[코딩테스트] 백준 11718번: 그대로 출력하기

dev.jelee 2025. 6. 15. 22:40

# 문제

 

# 코드

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

public class BOJ11718_v1 {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String input; // input 선언만

    while ((input = br.readLine()) != null) { // 입력값이 null이 아니면 true 이므로 계속 실행
      System.out.println(input);
    }

	br.close();
  }
}

 

# 입/출력 결과

 

# 과정

  1. BufferedReader 객체 생성
  2. String input 선언
  3. while문 사용해서 input값이 null이 아니면 true 이므로 계쏙 실행하도록 작성
  4. BufferedReader .close() 하기

 

# 메모

  • 내가 작성한 코드가 틀려서 원인을 몰랐다. 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        boolean visible = false;
        
        while (!visible) {
            String input = br.readLine();
            System.out.println(input);
            
            if (input == null || input.isEmpty()) {
                visible = true;
            }
        }

        br.close();
    }
}

 

  • 이렇게 작성했는데, null이거나 비어 있으면 입력을 멈추도록 했는데 왜 틀린거지 싶었다. 저번에 본 EOF 생각해서 조건문을 추가해본건데 왜 틀린건지 이해가 안 갔다. 그래서 결국 chat-gpt한테 물어보고 문제를 해결했다.
  • 문제를 보면 빈 줄은 주어지지 않는다고 했는데 나는 input.isEmpty()를 넣었기 때문이다. 그리고 null 값을 출력할 수도 있기 때문에 while (true) { ... } 로 반복을 하되, if 문에서는 input == null 이면, break;를 걸어주어야했다.