문제
N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오.
입력
총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 $N(1 ≤ N ≤ 100,000)$이 주어지고, 둘째 줄부터 $N$개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 $9,223,372,036,854,775,807$보다 작거나 같다.
출력
총 3개의 줄에 걸쳐 각 테스트 셋에 대해 $N$개의 정수들의 합 $S$의 부호를 출력한다. $S=0$이면 “0”을, $S>0$이면 “+”를, $S<0$이면 “-“를 출력하면 된다.
풀이
- 3개의 테스트셋이 주어지므로,
for _ in range(3):로 3번 돌려줌- for 반복문 안에, 이중 반복문으로 한 테스트셋에 대한 입력을 받은 후,
sum_n에 합을 정의해주고- if문을 통해
sum_n의 부호를 판별하여 출력해준다.
- 이중 반복문으로 인한 성능 저하 우려
→ 라이브러리
sys.stdin.realine를 input에 할당해주어 입력 속도 높여줌.
코드
- 일반 input을 통한 입력 처리 코드
for _ in range (3):
n = int(input())
sum_n = 0
for _ in range (n):
sum_n += int(input())
if sum_n == 0:
print("0")
elif sum_n > 0:
print("+")
elif sum_n < 0:
print("-")
- sys.stdin.readline으로 입력속도 높여준 코드
import sys
input = sys.stdin.readline
for _ in range (3):
n = int(input())
sum_n = 0
for _ in range (n):
sum_n += int(input())
if sum_n == 0:
print("0")
elif sum_n > 0:
print("+")
elif sum_n < 0:
print("-")
chat_bubble 댓글남기기
댓글남기기