15552번 : 빠른 A+B
문제
본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해주는 것이 좋다.
또한 입력과 출력은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다.
테스트케이스를 하나 받은 뒤 하나 출력해도 된다.
입력
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
출력
각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.
예제 입력 1
5
1 1
12 34
5 500
40 60
1000 1000
예제 출력 1
2
46
505
100
2000
정답
import sys
T = int(input()) # 테스트 케이스 개수를 입력받아 int형으로 변환 후 변수 T에 할당
for i in range(T): # T번 만큼 1부터 i에 순서대로 넣음
A, B = map(int, sys.stdin.readline().split()) # A와 B를 공백을 사이에 두고 입력받아 int형으로 변환 후 각각 저장
print(A+B) # A+B 출력
풀이
import sys
1. sys 모듈
T = int(input()) # 테스트 케이스 개수를 입력받아 int형으로 변환 후 변수 T에 할당
2. input() 함수 : 사용자로부터 문자를 입력받을 때 사용
A = input()
사용자로부터 입력받은 문자가 변수 A에 할당된다.
입력받은 문자의 데이터 타입(자료형)은 문자열(string)이다.
3. int() 함수 : 괄호 안의 값을 정수로 변환할 때 사용
T에 할당되어 있는 값의 데이터 타입이 현재 문자이기 때문에 정수형으로 바꿔줘야 연산이 가능하다.
변수를 각각 입력받기 때문에 입력받을 때 바로 int() 함수를 써주면 문자열로 입력받고 바로 정수형으로 변환하여 변수에 저장한다.
A, B = map(int, input().split()) # A와 B를 공백을 사이에 두고 입력받아 int형으로 변환 후 각각 저장
4. map() 함수 : 반복 가능한 자료형을 원하는 함수로 실행시킬 때 사용
map(함수, 반복 가능한 자료형) 형태
해당 문제에서는 입력받은 숫자를 공백으로 구분하여 int형으로 변환하는 목적으로 사용했다.
1 1을 입력받았을 때 split() 함수를 사용해 공백으로 구분하고,
구분한 1, 1을 int() 함수를 사용해 각각 변수 A, B에 정수형태로 저장한다.
for i in range(T): # T번 만큼 1부터 i에 순서대로 넣음
A, B = map(int, sys.stdin.readline().split()) # A와 B를 공백을 사이에 두고 입력받아 int형으로 변환 후 각각 저장
print(A+B) # A+B 출력
5. 반복문 for
for {변수} in range(A) : 반복문 안에 존재하는 {변수}에 1부터 A까지 순서대로 넣음
위 문제의 반복문에서 변수 i와, range(T)이기 때문에 1부터 사용자에게 입력받는 T까지 i 안에 순서대로 반복한다.
입력 예제에서 T에 5를 입력받았기 때문에
1부터 5까지, 즉 다섯번 반복문 안의 코드를 반복하여 실행한다.
'코딩 테스트 문제 > BAEKJOON [Python]' 카테고리의 다른 글
| [BAEKJOON][Python] 11022번 (0) | 2025.07.21 |
|---|---|
| [BAEKJOON][Python] 11021번 (1) | 2024.11.27 |
| [BAEKJOON][Python] 25314번 (1) | 2024.11.25 |
| [BAEKJOON][Python] 25304번 (0) | 2024.11.24 |
| [BAEKJOON][Python] 8393번 (0) | 2024.11.23 |