기초 프로그래밍/Python

[백준] 15552번 파이썬 python(빠른 A+B)

Chaerry._o 2023. 7. 19. 11:31
반응형

▷ 문제

본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.

C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다.

Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.

Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.

또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.

 

전체 코드

import sys

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

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

 

코드 분석

import sys

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

import를 사용해서 sys 모듈을 불러온다.

변수 T에 테스트 케이스의 개수를 넣어준다. sys.stdin.readline() 함수는 input() 함수의 시간 초과 문제를 해결하기 위해서 사용한다. input() 함수와 마찬가지로 문자열로 변수에 저장된다. int() 함수를 사용해서 입력 받은 문자열을 정수형으로 바꿔준다.

 

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

for 문과 range() 함수를 사용해서 T번 반복되는 반복문을 만든다. map() 함수는 요소를 지정된 함수에 적용시켜주는 함수이다. sys.stdin.readline() 함수를 사용해서 문자열을 입력받고, split() 함수를 사용해 입력 받은 문자열을 나눠준다. 그리고 int() 함수로 입력받은 문자열을 정수형으로 바꿔준 후 A와 B를 더한 값을 출력한다.

 

반응형