본문 바로가기
공부/코딩테스트

백준: 11021번 A+B - 7 (Python3)

by 혼밥맨 2022. 7. 24.
반응형

백준: 11021번 A+B - 7 (Python3)

A+B - 7 성공

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB 182269 90046 78862 49.685%

문제

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

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

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

출력

각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.

예제 입력 1

5
1 1
2 3
3 4
9 8
5 2

예제 출력 1

Case #1: 2
Case #2: 5
Case #3: 7
Case #4: 17
Case #5: 7

힌트

python의 format string 기능을 이용하면 한결 간단하게 그리고 짧게 코드를 짤 수 있다. 그런데 시간 부분에서 비효율적으로 된다(?)

 

답안1 (import sys)

1
2
3
4
5
6
7
8
9
import sys
 
rep = int(input())
 
for i in range(1, rep+11):
    a, b = map(int, sys.stdin.readline().split())
    print("Case #", end=""); print(i,end=""); print(": ", end="");
    print(a+b)
 
cs

코드가 딱 봐도 못생겼다. 프린트가 덕지 덕지 돼있고, import sys까지 돼있다. 더 간결하고 짧게 작성할 수 있는 데에도 불구하고 말이다.

메모리는 28776KB, 시간은 64ms.

답안2 (format string)

1
2
3
4
5
rep = int(input())
for i in range(rep):
    a, b = map(int, input().split())
    pr = f'Case #{i+1}: {a+b}'
    print(pr)
cs

format string으로 프린트 개수를 줄이고, 불필요한 library는 import하지 않았다. 

메모리는 30840ms, 시간은 80ms. 

발견

지금껏 같은 동작을 하는 코드일 때 코드 길이가 짧으면 메모리와 시간 부분에서 효율이 더 나을 것이라고 생각했는데, 아니었다. format string이 생각 보다 일반 프린트 여러 개보다 시간을 더 먹는 것 같다.

반응형

댓글