코딩테스트/파이썬 코딩테스트

A+B - 4 (백준 10951번 , 파이썬)

Samsun 2023. 9. 10. 18:19
반응형

문제

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

 

 

입력

 

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

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

 

 

출력

 

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


 

 

문제풀이

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

 

 

입력을 받은 후 A+B를 출력하면 되는 간단한 문제라고 생각될 수 있습니다. 하지만 문제에선 여러 개의 테스트 케이스로 이루어져 있단 점이 명시되어 있기에, 언젠가 프로그램이 종료되도록 만들어야 합니다.

이 때 무한 반복하기와 예외 처리로 문제 해결을 하면 되는데, 다음과 같은 과정으로 알고리즘 솔루션을 찾으면 됩니다.

  1. 무한 반복하기 while True:로 틀을 만들어줍니다.
  2. try, except를 활용하여 보통의 경우 try, 그렇지 않을 경우 except 예외 처리를 하여 프로그램이 종료되도록 만들어줍니다.
  3. try에 변수 2개를 입력받은 후 정수 처리하여 이를 더하는 것을 print()로 출력해주도록 합니다. 이후 프로그램이 마무리되면 except의 break 구문으로 while True: 무한 반복문을 종료시켜주도록 합니다.

 

문제의 경우 단순한 케이스만 입력이 될 때도 있지만, 이렇게 문제에서 여러 개의 케이스를 입력받고 언젠가 끝난다는 조건을 쓸 떄가 있습니다. 이럴 때 while True로 반복하기 틀을 만들어주되, try, except를 활용하여 예외 상황을 만들어 프로그램을 종료하는 코드도 작성을 해주면 됩니다.

예외 처리가 왜 필요하고 어떻게 사용하면 좋을지 설명할 떄 매우 좋은 문제로 생각됩니다. 😊

추가로 sys.stdin.readline() 함수와 input() 함수로 서로 다르게 코드를 작성하였습니다. 이번엔 메모리의 크기가 같으나 시간이 8ms 정도 차이가 났습니다. 절대적인 시간으로는 작게 느껴질 수 있지만, 무려 약 16% 정도 속도가 향상된 점을 확인할 수 있었습니다.

input() 은 기본 문제를 풀 때, 이후 익숙해지만 sys.stdin.readline() 함수를 활용하여 문제를 풀도록 연습을 해야겠습니다.