728x90
반응형
출처 : https://www.acmicpc.net/problem/1247
부호 성공
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 | 256 MB | 10293 | 3231 | 2854 | 36.491% |
문제
N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오.
입력
총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같다.
출력
총 3개의 줄에 걸쳐 각 테스트 셋에 대해 N개의 정수들의 합 S의 부호를 출력한다. S=0이면 "0"을, S>0이면 "+"를, S<0이면 "-"를 출력하면 된다.
예제 입력 1 복사
3
0
0
0
10
1
2
4
8
16
32
64
128
256
-512
6
9223372036854775807
9223372036854775806
9223372036854775805
-9223372036854775807
-9223372036854775806
-9223372036854775804
예제 출력 1 복사
0
-
+
출처
- 문제를 만든 사람: author5
- 빠진 조건을 찾은 사람: joonas, pichulia
- 데이터를 추가한 사람: ntopia
- 문제의 오타를 찾은 사람: ZZangZZang
알고리즘 분류
import java.util.Scanner;
import java.math.BigInteger;
public class Main
{
private static Scanner s = new Scanner(System.in);
public static void main(String[] args) {
int testCount = 3;
StringBuffer result = new StringBuffer();
for(int i=0; i<testCount; i++) {
int testCaseCount = s.nextInt();
BigInteger total = BigInteger.ZERO; // 수가 너무 커서 BigInteger을 사용하지 않으면 풀 수 없음.
for(int j=0; j<testCaseCount; j++) {
BigInteger number = new BigInteger(s.next());
total = total.add(number);
}
// 같으면 0, 보다 작으면 -1, 크면 1 반환됨.
int compare = total.compareTo(BigInteger.ZERO);
switch(compare) {
case 0:
result.append("0");
break;
case -1:
result.append("-");
break;
case 1:
result.append("+");
break;
}
// 마지막이 아니면 줄바꿈.
if(i!=testCount-1) result.append("\n");
}
System.out.println(result.toString());
}
}
참고: https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html
- 또다른 BigInteger 관련 문제로는 해당 문제가 있다.
728x90
반응형
'알고리즘 > 문제 풀이(출처 : 백준)' 카테고리의 다른 글
[JAVA] 축구 게임_13560 (0) | 2023.01.16 |
---|---|
[JAVA] 소수 사이 수열_3896 (0) | 2023.01.16 |
[JAVA] 달팽이3_1959 (0) | 2023.01.15 |
[JAVA] 조약돌 꺼내기_13251 (0) | 2023.01.14 |
[JAVA] 네잎 클로버를 찾아서_3089 (0) | 2023.01.14 |