python_algorithm_basic python 백준 solved

[Python/파이썬] 백준 1247번 - 부호

Kwangjin Park

Sep 13, 2024 · 1 min read

Follow

문제

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 0

chat_bubble 댓글남기기

댓글남기기