오늘은 질문게시판에 24시간 쉬지않고 올라오는 그대로 출력하기 (BOJ 11718) 문제에 대해서 알아보자.


문제를 설명하면, 입력이 들어오는 그대로 출력하면 된다.
몇 가지 고려할 점은 다음과 같다.


* 입력이 더 없어서 에러가 발생해서 exit code가 0이 아니면 RTE가 난다.
* 입력이 더 없어서 에러가 발생해서 stderr에 무언가 출력하면 RTE가 발생한다.
* 공백 처리에 문제가 있을 수 있다.
* 기타 다양한 방식으로 틀릴 수 있다.


따라서 올바른 코드와 잘못된 코드들의 예시를 통하여, 입출력을 어떻게 받아야 하는가 알아보도록 하자.


# 정해


가장 간단한 방법은 한 글자씩 읽으면서 그대로 출력하다가 입력이 끝나면 프로그램을 종료하는 것이다.
이를 보여주는 C언어 코드는 아래와 같다.


viewimage.php?id=3dae&no=24b0d769e1d32ca73cee84fa11d02831cd949b6924735c7cb75a680f5f9d0fd517609e3e75f2421b1a5cc9a44c2cb90d53d35ca73730d69a1d


# 정해 2


두 번째로, fgets를 이용하는 방법이 있다. fgets는 입력받은 줄에 엔터가 있으면 그대로 남겨두므로, 따로 엔터를 추가할 필요는 없다.
참고로 fgets의 두 번째 인자는 배열 크기이다 (입력받을 문자의 최대 개수가 아니다!)


viewimage.php?id=3dae&no=24b0d769e1d32ca73cee84fa11d02831cd949b6924735c7cb75a680f5f9d0fd517609e3e75f2421b1a5cc9a44c2fbe5968db97abd636c37f97


# 정해 3


gets 함수를 이용해도 된다. 이 때 엔터가 사라지는 것에 주의하시오.
엄밀히 말하면 그대로 출력하는 것은 아니다. (마지막 줄 끝에 엔터가 없다면 엔터가 추가된다)
하지만 BOJ의 채점 시스템 특성상 마지막 빈 줄 차이는 허용해주기 때문에 상관없는 것이다.


viewimage.php?id=3dae&no=24b0d769e1d32ca73cee84fa11d02831cd949b6924735c7cb75a680f5f9d0fd517609e3e75f2421b1a5cc9a44c2ce50a9317c1622afe70dc64


# 정해 4


scanf는 생각보다 많은 일을 할 수 있다. 정해 3과 마찬가지로 마지막 빈 줄이 추가될 수 있다.


viewimage.php?id=3dae&no=24b0d769e1d32ca73cee84fa11d02831cd949b6924735c7cb75a680f5f9d0fd517609e3e75f2421b1a5cc9a44c7ded58fa8903118f4a9ff397


# 정해 5


마지막으로 Python 3 풀이를 알아보자. EOFError에 주의하자.


viewimage.php?id=3dae&no=24b0d769e1d32ca73cee84fa11d02831cd949b6924735c7cb75a680f5f9d0fd517609e3e75f2421b1a5cc9a44c29ec08f1f224109675488893