N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오.
총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같다.
총 3개의 줄에 걸쳐 각 테스트 셋에 대해 N개의 정수들의 합 S의 부호를 출력한다. S=0이면 "0"을, S>0이면 "+"를, S<0이면 "-"를 출력하면 된다.
3
0
0
0
10
1
2
4
8
16
32
64
128
256
-512
6
9223372036854775807
9223372036854775806
9223372036854775805
-9223372036854775807
-9223372036854775806
-9223372036854775804
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
let sum = 0n;
let startIndex = 0;
for (let i = 0; i < input.length; i++) {
if (i === startIndex) {
if (i!== 0) checkAnswer(sum);
sum = 0n;
startIndex = startIndex + +input[i] + 1;
} else {
sum += BigInt(input[i]);
if (i === input.length - 1) checkAnswer(sum)
}
}
function checkAnswer(sum) {
if (sum > 0) console.log("+")
else if (sum < 0) console.log("-")
else console.log("0")
}
입력이 거지같아서 테스트셋의 시작과 끝을 잘 처리하는 것과, 자바스크립트에서는 큰 숫자(253 - 1)보다 큰 숫자를 표현하기 위해서는 BigInt
를 사용해야 하는데, 이것만 잘 알고 있으면 어렵지 않은 문제였다.