[백준] 1247. 부호

상현·2023년 10월 23일
0

코딩테스트

목록 보기
5/30
post-thumbnail

문제

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를 사용해야 하는데, 이것만 잘 알고 있으면 어렵지 않은 문제였다.

profile
프론트엔드 개발자 🧑🏻‍💻 https://until.blog/@love

0개의 댓글