838 words
4 minutes
백준 15552: 빠른 A+B

안녕하세요, 여러분! 오늘은 백준 온라인 저지의 15552번 문제 “빠른 A+B”에 대해 함께 알아보겠습니다. 이 문제는 알고리즘을 처음 시작하시는 분들에게 아주 좋은 학습 기회가 될 거예요. 특히 입출력 처리 속도의 중요성을 깨닫게 해주는 문제랍니다.

먼저, 문제를 간단히 살펴볼까요? 이 문제는 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하는 것입니다. 아주 간단해 보이죠? 하지만 여기에 함정이 있어요. 바로 입력의 개수가 최대 1,000,000개라는 점입니다. 일반적인 방법으로는 시간 초과가 발생할 수 있어요.

그럼 어떻게 해결해야 할까요? 바로 여기서 우리가 이전에 배운 sys.stdin.readline()이 빛을 발합니다. 이 함수를 사용하면 입력 처리 속도를 크게 향상시킬 수 있어요.

자, 이제 코드를 작성해볼까요?

import sys

T = int(sys.stdin.readline())

for _ in range(T):
    A, B = map(int, sys.stdin.readline().split())
    print(A + B)

이 코드를 하나씩 살펴볼까요?

  1. import sys: 먼저 sys 모듈을 불러옵니다. 이 모듈에 포함된 stdin.readline() 함수를 사용하기 위해서예요.

  2. T = int(sys.stdin.readline()): 테스트 케이스의 개수를 입력받습니다. sys.stdin.readline()은 문자열을 반환하므로, int()를 사용해 정수로 변환해줍니다.

  3. for _ in range(T):: T번 반복하는 루프를 만듭니다. 여기서 _는 반복 변수를 사용하지 않을 때 관행적으로 사용하는 변수명이에요.

  4. A, B = map(int, sys.stdin.readline().split()): 한 줄에 두 정수를 입력받습니다. split()으로 문자열을 나누고, map()int를 사용해 각각을 정수로 변환합니다.

  5. print(A + B): A와 B를 더한 결과를 출력합니다.

이 코드의 핵심은 input() 대신 sys.stdin.readline()을 사용한다는 점입니다. sys.stdin.readline()input()보다 훨씬 빠르게 동작해서, 대량의 데이터를 처리할 때 큰 차이를 만들어냅니다.

여러분, 이 문제를 통해 무엇을 배울 수 있을까요? 바로 ‘입출력 최적화의 중요성’입니다. 알고리즘 문제를 풀 때는 단순히 정답을 구하는 것뿐만 아니라, 얼마나 효율적으로 구하는지도 중요해요. 특히 대량의 데이터를 다룰 때는 입출력 방식 하나만으로도 실행 시간에 큰 차이가 날 수 있답니다.

또한 이 문제는 실제 프로그래밍에서도 중요한 교훈을 줍니다. 예를 들어, 웹 서버를 개발할 때도 대량의 요청을 빠르게 처리하는 것이 중요하죠. 이런 상황에서도 입출력 최적화가 큰 역할을 할 수 있어요.

마지막으로, 이 문제를 응용해볼 수 있는 방법도 생각해보세요. 예를 들어, A+B 대신 다른 연산을 수행하거나, 입력 형식을 조금 변경해보는 것은 어떨까요? 이런 식으로 문제를 변형해보면 여러분의 프로그래밍 실력이 더욱 향상될 거예요.

백준 15552: 빠른 A+B
https://kimjinwoo.me/posts/20240718-algorithm-5/
Author
Jinwoo Kim
Published at
2024-07-18