[Python Algorithm] 백준알고리즘 11718번 파이썬 풀이

2019.06.25 02:29Python/ㄴ Algorithm

Problem


Introduction


이번 문제를 풀면서 나의 경우 새로운 풀이방식과 문법을 습득하게되었다.

Solve


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

완성된 코드는 위와 같다.
이 문제는 try ~ except 즉 예외처리 구문을 알고있다는 기준에 입각하여 설명하도록 하겠다.
문제를 살펴보면 입력이 주어지는데 이 입력은 최대 100줄까지 들어올 수 있다고 한다. 또한 각 줄은 100자를 넘지 않으며, 빈 줄은 주어지지 않는다고 설명되어있다.

여기서 문제가 발생한다. 기존에 입출력 관련 문제들은 정확히 몇줄정도가 들어오거나 입력을 받으면 뚜렷한 출력물이 있기 때문에 별 문제가 없었으나, 이번 문제에서 "입력은 최대 100줄까지 들어올 수 있다." 이 말은 입력이 최대 100줄까지 주어지는데 이게 100줄이 아닐수도 있다는 말이 된다.

조금 더 쉽게 말해보자면 0~100줄의 문자열을 랜덤으로 입력하고, 입력이 종료되면 내 프로그램을 Ctrl + Z 또는 Ctrl + D로 종료하겠다는 의미이다. (이것이 아래 설명할 EOFError에 해당한다.)

아래 try ~ except 문장을 살펴보도록 하자.

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

우선 해당 코드를 while True를 이용하여 무한반복 시킨다.

try절에서는 우선 input값을 출력하게된다. while True 구문 안에 위치해있기때문에 예외가 발생하여 except 절이 실행되기 전까지는 해당 코드를 무한반복하게된다.

무한반복하는도중 사용자가 해당 프로그램을 종료했을 때 발생하는 EOFError가 발생하게되면 즉시 while문을 break으로 빠져나가 프로그램을 종료시킨다.

Result


이번 문제는 굳이 input, output 예제를 보여 줄 필요는 없을것같다.
입력받은대로 출력하고, EOFError가 발생할 경우 프로그램이 종료되기때문이다.

그래도 input, output 예제를 살펴보자면 아래와 같다.

input
Hello, world!

output
Hello, world!