Baekjoon 문제 풀기 (11718번 : 그대로 출력하기) Python

11718번 : 그대로 출력하기

1. 문제읽기


입력 받은 대로 출력하기

EOF(End Of File)가 입력될 때까지 입력 받기
풀어말하면, 파일의 입력이 끝날 때까지 계속 입력을 받는 것이다.
입력의 갯수가 주어지지 않는다.

2. 제출 코드


1. 처음에 제출한 코드
import sys

while True:
    a = sys.stdin.readline().rstrip()
    if a == "":
        break
    print(a)

try-except를 썼는데, IDE에서는 엔터를 쳐도 프로그램이 끝나지 않아서 답이 아닌 것 같았다.(근데 사실 답 맞음) 그래서 문제를 다시 보니 빈 줄은 주어지지 않는다는 조건이 있어서 빈줄을 입력받으면 반복을 끝내는 것으로 나타냈다.

찾아보니 input()을 썼다면 틀렸을 것이다. input()은 더이상 읽을 것이 없다면 EOF에러를 발생시키지만, sys.stdin.readline()은 더이상 읽을 것이 없다면 빈 문자열을 리턴하기 때문에 결과적으로는 맞는 답이 되었다.

2. 틀린줄 알았던 코드
while True:
    try:
        print(input())
    except EOFError:  # EOFError는 생략 가능
        break

엔터를 쳐도 프로그램이 종료되지 않길래 틀린 줄 알았다.
알고보니 EOF 문자(ctrl + d)를 입력받기 전까지 출력이므로 틀린 것은 아니었다.

3. 공부할 것


sys모듈은 알고 있었는데 read()함수는 몰랐다. 이 문제에서 원하는 EOF를 읽을 때 까지 입력을 받는 기능이 바로 read()함수이다. read()함수를 쓰면 이렇게 간단하게 나타낼 수 있다.

import sys

print(sys.stdin.read())

댓글남기기