본문 바로가기
코딩 테스트/Python_백준

[백준/Python] 10951번 A+B-4 문제

by 모두의 케빈 2023. 3. 16.

■ 문제

출처: 백준 10951번 A+B-4 문제

 

■ 코드 풀이

 

아이디어는 다음과 같습니다.

1) 처음에는 제가 문제를 이해하지 못해서 블로그에서 풀이를 찾아보니 while문과 try, except를 활용하여 다들 코드를 작성하셨더라고요. 핵심은 무한히 두 수를 더하는 반복문 속에서 다른 입력이 입력되면 종료하는 알고리즘입니다.

 

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

 

2) 위의 코드처럼 while문을 활용하면 정수 이외 다른 입력이 들어오면 error가 발생하여 except 문의 break가 활성화되며 반복문이 종료됩니다. 이 코드를 채점해보면 코드 길이는 105B, 시간은 48ms가 소요된 것을 알 수 있습니다.

 

3) 그런데 여기서 'sys.stdin을 활용해도 될 것 같은데?' 라는 생각이 들었습니다. sys.stdin은 ^z(컨트롤 z) 값이 입력되기 전까지 값을 개행 문자와 함께 계속 입력 받습니다. 입력받은 값은 split하여 int로 변환하고 두 수를 더해 출력합니다.

 

import sys

for i in sys.stdin:
    a,b = map(int, i.split())
    print(a+b)

 

4) 위의 코드로 채점하면 코드 길이는 76B이고 시간은 40ms로 try, except 구문을 활용한 코드보다 훨씬 효과적입니다. 

 

 

 

 

 

참고로 sys.stdin과 관련된 내용은 아래 블로그 글을 참고했습니다.

[라이브러리] sys.stdin : 네이버 블로그 (naver.com)

 

[라이브러리] sys.stdin

#stdin #sys #read #readline #readlines ※ "파이썬 코딩 도장: 27.2 문자열 여러 줄을 파일에 쓰기,...

blog.naver.com

 

 

댓글