[Bronze III] 부호 - 1247
1247번: 부호
총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거
www.acmicpc.net
성능 요약
메모리: 310016 KB, 시간: 1692 ms
분류
임의 정밀도 / 큰 수 연산(arbitrary_precision), 사칙연산(arithmetic), 수학(math)
문제 설명
N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오.
입력
총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같다.
출력
총 3개의 줄에 걸쳐 각 테스트 셋에 대해 N개의 정수들의 합 S의 부호를 출력한다. S=0이면 "0"을, S>0이면 "+"를, S<0이면 "-"를 출력하면 된다.
답 : Biginteger의 add로 정수들의 합을 계산하고,
합의 부호 출력은 compareTo()를 사용하여 비교하여 출력한다.
compareTo() 메소드는 호출한 객체와 비교 대상 객체를 비교하여
호출한 객체가 작으면 -, 같으면 0, 크면 +를 반환한다.
코드상 s.compareTo(BigInteger.ZERO)가 양수이면 +, 음수면 -, 0이면 0을 출력한다.
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int t = 0; t < 3; t++) {
int n = sc.nextInt();
BigInteger s = BigInteger.ZERO;
for (int i = 0; i < n; i++) {
s = s.add(sc.nextBigInteger());
}
if (s.compareTo(BigInteger.ZERO) > 0) {
System.out.println("+");
} else if (s.compareTo(BigInteger.ZERO) < 0) {
System.out.println("-");
} else {
System.out.println("0");
}
}
sc.close();
}
}
'algorithm > 백준' 카테고리의 다른 글
[백준] 점수계산 - 2506 JAVA[자바] (0) | 2023.02.28 |
---|---|
[백준] 핸드폰 요금 - 1267 Java[자바] (0) | 2023.02.27 |
[백준] 나누기 - 1075 Java[자바] (0) | 2023.02.25 |
[백준] 보물 - 1026 Java[자바] (0) | 2023.02.24 |
[백준] 타임카드 - 5575 Java[자바] (0) | 2023.02.23 |