[백준]B3-1247

oxllz·2022년 1월 20일
0

백준-브론즈

목록 보기
16/65
post-thumbnail

문제

N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오.


입력

총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같다.


출력

총 3개의 줄에 걸쳐 각 테스트 셋에 대해 N개의 정수들의 합 S의 부호를 출력한다. S=0이면 "0"을, S>0이면 "+"를, S<0이면 "-"를 출력하면 된다.


풀이


안녕 시간초과야..

from sys import stdin
for i in range(3):
    num = int(stdin.readline())
    res = 0
    for j in range(num):
        res += int(stdin.readline())
    if res == 0:
        print("0")
    elif res > 0:
        print("+")
    else:
        print("-")

그냥 int(input()) 을 사용하면 시간초과가 뜬다.

input() 과 stdin.readline() 의 차이점은 뭘까??
검색을 해보니 input() 은 파라미터로 prompt message 를 받을 수 있다고 한다. 또한 입력받은 문자의 개행문자를 삭제시켜 리턴한다.

그에 비해 stdin.readline() 는 prompt message 를 파라미터로 받지 않고, 개행문자를 포함한 값을 리턴하기 때문에 stdin.readline() 의 속도가 더 빠르다고 한다.

0개의 댓글