happy coding

[java] 1247. 부호 본문

coding study/baekjoon

[java] 1247. 부호

yeoonii 2023. 8. 19. 16:05

문제

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

입력

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

출력

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

import java.io.*;
import java.math.BigInteger;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        for (int i = 0; i < 3; i++) {
            int N = Integer.parseInt(br.readLine());
            BigInteger check = BigInteger.ZERO;
            for (int j = 0; j < N; j++) {
                long input = Long.parseLong(br.readLine());
                check = check.add(BigInteger.valueOf(input));
            }
            if (check.equals(BigInteger.ZERO)) {
                System.out.println("0");
            } else if (check.compareTo(BigInteger.ZERO) > 0) {
                System.out.println("+");
            } else {
                System.out.println("-");
            }
        }
    }
}

long 자료형을 사용해 check를 선언하면 "틀렸습니다."가 발생해서, 왜 그런지 찾아보니까 BigInteger형으로 해야 한다고 하더라.

'coding study > baekjoon' 카테고리의 다른 글

[java] 10250. ACM 호텔  (0) 2023.08.19
[java] 2441. 별 찍기 - 4  (0) 2023.08.19
[java] 1267. 핸드폰 요금  (0) 2023.08.19
[java] 4153. 직각 삼각형  (0) 2023.08.18
[java] 10039. 평균 점수  (4) 2023.08.18
Comments