- 시간 제한: 2초
- 메모리 제한: 256 MB
문제
N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오.
입력
총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같다.
출력
총 3개의 줄에 걸쳐 각 테스트 셋에 대해 N개의 정수들의 합 S의 부호를 출력한다. S=0이면 "0"을, S>0이면 "+"를, S<0이면 "-"를 출력하면 된다.
import sys
for i in range(3):
n = int(sys.stdin.readline())
num = [int(sys.stdin.readline()) for _ in range(n)]
if sum(num) > 0:
print('+')
elif sum(num) < 0:
print('-')
else:
print(0)
풀이
이 문제의 알고리즘은 간단한데 시간초과가 될 가능성이 높다.
보통 input() 내장함수를 이용하여 입력값을 받게 되는데
input()은 prompt message를 출력하고, 개행 문자를 삭제한 값을 리턴하기 때문에 느리다.
대신해서 sys.stdin.readline()를 사용하여 입력값을 받을 수 있다.
실제로 input()을 사용한 코드는 시간초과로 실패가 떴는데, sys.stdin.readline()로 바꿔 입력하니 정답처리가 되었다.
(참고: buyandpray.tistory.com [Python] Input vs. sys.stdin.readline 차이점?)
'👩🏻💻 Front-end > 👾 Algorithm' 카테고리의 다른 글
백준 1032 - 명령 프롬프트 (Python) (0) | 2022.04.23 |
---|---|
백준 1598 - 꼬리를 무는 숫자 나열 (직각거리 구하기) (Python) (0) | 2022.04.20 |
백준 1267 - 핸드폰 최소 요금제 구하기 (Python) (0) | 2022.04.20 |
백준 1212 - 8진수를 2진수로 변환 (Python) (0) | 2022.04.19 |
백준 1085 - 직사각형에서 탈출 (Python) (0) | 2022.04.18 |