Study/Baekjoon

[Python] 백준 11718번 그대로 출력하기 | EOFError, sys.stdin

yeorii 2023. 3. 24. 15:45

그대로 출력하기

문제

입력 받은 대로 출력하는 프로그램을 작성하시오.

입력

입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.

출력

입력받은 그대로 출력한다.

예제 입력 1

Hello
Baekjoon
Online Judge

예제 출력 1

Hello
Baekjoon
Online Judge

내 풀이

while True:
    try:
        print(input())
    except EOFError:
        break

EOFError (입력값이 없을 때 나타나는 에러) 가 뜨면 while 반복문을 break하도록 짰다.

sys.stdin 이용한 풀이

import sys
for line in sys.stdin:
    print(line, end="")

그동안 티스토리에 sys.stdin.readline(), sys.stdin.readlines()들은 다뤘는데 정작 그 기본인 sys.stdin에 대해서는 제대로 안찾아본 것 같아서 이번에 찾아봤다!


sys.stdin

아래는 sys.stdin에 대한 python 공식문서!

https://docs.python.org/3.10/library/sys.html#sys.stdin

정리하자면,

  • sys.stdin : 여러 줄 입력 받을 때
    for line in sys.stdin:
        print(line)
    이때 end=""를 하지 않고 이대로 출력하면 ['1\n', ...] 이런 식으로 개행 문자와 함께 출력된다.

 

  • sys.stdin.readline : 한 줄 입력 받을 때
    a, b = sys.stdin.readline().split()
    • 이 함수로 여러 줄 입력 받고 싶을 때는 for loop를 사용하면 된다.
        a = [sys.stdin.readline() for _ in range(N)]