Coding/백준 문제풀이

[백준] python 10951번 ( A + B - 4 )

dodomp0114 2021. 12. 30. 19:34

 

 

이 문제의 목적은 문자열을 올바르게 입력받고 파일의 끝 ( EOF )을 올바르게 판단하는 법을 연습하는 것.

 

 

 

문제 구성

 

문제 입출력

 

 

● 문제 풀이 :

 

두 개의 수를 입력받는데 공백으로 구분하여 두개의 변수에 각 각 값을 입력 받습니다.

그 다음, 입력 받은 두 개의 수를 합하여 화면에 출력.

 

여기서 주의 해야 할 점은 더이상 값을 입력 받지 못하였을때 프로그램이 오류를 출력하지 않고,

정상적으로 종료되어 한다는 점입니다.

 

테스트 할 때, 더 이상 입력할 값이 없을 경우 프로그램을 종료 하는 방법은

윈도우는 ( ctrl + z )  /  맥, 리눅스 ( ctrl + d ) 입력.

 

해결책으로는 

  1. 예외 처리를 하는 방법. (  while 문  )
  2. 예외 처리 없이  sys.stdin.readlines() 를 사용하는 방법 ( for 문 )

 

 

 

 

① 예외 처리를 사용하는 방법

  

    - input() 를 사용했을 경우.

      input() 같은 경우, 더이상 값을 읽어오지 못하게 되면 EOFError 가 발생하는데, 그러한 에러를 무시하고

      프로그램 정상 종료.

while True:
	try:
    	a,b = map(int,input().split())
        print(a+b)
   	except EOFError:
    	break

 

 

  

    - sys.stdin.readline() 을 사용했을 경우.     ( sys.stdin.readlines() 와 다르니 주의 )

import sys

while True:
	try:
    	a,b = map(int,sys.stdin.readline().split())
        print (a+b)
    except:
    	break

 

 

 

 

① 예외 처리 없이  sys.stdin.readlines() 를 사용하는 방법

 

    - sys.stdin.readlines() 를 쓰게되면 여러번 문자열을 입력받아 저장하게 되는데 

      미리 저장되어있는 데이터로 반복문을 돌리기때문에 오류가 발생하지 않습니다.

import sys

lines = sys.stdin.readlines()

for line in lines:
	a,b = map(int,line.split())
    print (a+b)