우당탕탕 파이썬 with 하루하나 알고리즘

백준 10951 파이썬 - 끝이라는 말 없이 끝내기.. (feat. EOF)

hyxndy 2022. 3. 24. 10:42

백준 10951번 - A+B -4 with Python

Q. 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력> 입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력> 각 테스트 케이스마다 A+B를 출력한다.

 

https://www.acmicpc.net/problem/10951

 

10951번: A+B - 4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net


어제 올렸던 포스팅과 매우 흡사한 문제다!

2022.03.23 - [우당탕탕 파이썬 with 하루하나 알고리즘] - 백준 10952 파이썬 - While문으로도 A + B를 출력할 수 있다고?!

 

백준 10952 파이썬 - While문으로도 A + B를 출력할 수 있다고?!

백준 10952번 - A+B -5 with Python Q. 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력> 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루

happyhyxndy.tistory.com

하지만 조금 다른 점이 있다.

어제의 문제에서는 0 0을 입력을 받은 후에야 while문을 종료시킬 수 있었는데,

이번 문제에서는 딱히 별 다른 말 없이 while문을 종료시켜야한다.

 

읭...? 이게 무슨말이야,,,

분명 while문은 반복횟수를 모르고, 특정한 조건이 주어져있을 때 반복이 실행가능하도록 하는 구문이었는데

조건이 없는데도 while문을 멈출 수 있다고..???

 

그렇다! 바로 EOF를 이용하면 말이다.

 

EOF (End Of File)

EOF는 말 그대로 파일의 끝을 나타낸다. 이것은 사용자가 더이상 데이터를 읽을 수 없는 프로그램의 지점이다.

파일은 항상 그 끝을 알 수 있는데, 이 끝에 도달하게 되면 빈문자열이 출력으로 반환된다.

 

우리는 EOF를 사용하기 위해 try와 except를 사용할 것이다.

계속 진행되는 반복문, 즉 조건이 True인 반복문을 만들고, 이 안에서 try와 except를 통해 예외처리를 진행한다.

입력이 있을 땐 try문에 있는 코드들을 실행시키고,

입력이 없을 때, 즉 EOFError가 발생할 때는 break를 통해 while문의 반복을 멈추게 한다.

 

이를 코드로 고쳐써보면 다음과 같다.

A,B=map(int, input().split())
while True:
    try:
        print(A+B)
        A,B=map(int, input().split())
    except EOFError: #EOFError를 써주지 않아도 무방하다.
        break