728x90
https://www.acmicpc.net/problem/1247
1247번: 부호
총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거
www.acmicpc.net
부호
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 | 256 MB | 10689 | 3376 | 2977 | 36.550% |
문제
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
-
+
풀이 : 역시 자료형에 주의해야 하는 문제.
테스트 셋이 3개라고 주어졌으니 그 수를 이용하여 for 문을 돌린다.
그 안에서 N개의 정수를 for 문으로 돌려 N개의 정수들의 합을 출력한다.
그리고 부호를 출력해야 하는데, 정수 비교가 아니기 때문에 >, <, == 는 사용하지 못하고
CompareTo() 메소드를 사용, 하나의 결과값에 따라 출력이 달라지기에 Switch~Case 문을 사용했다.
*** CompareTo 비교값이 -1이면 음수, 1이면 양수, 0 이면 0
package beakjoon.bronze3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Beakjoon1247 {
// 백준 1247. 부호
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int testCase = 3;
for(int i=0; i<testCase; i++){
int n = Integer.parseInt(br.readLine());
BigInteger b = new BigInteger("0");
for(int j=0; j<n; j++){
BigInteger input = new BigInteger(br.readLine());
b= b.add(input);
}
switch (b.compareTo(BigInteger.ZERO)) {
case 0:
System.out.println("0");
break;
case -1:
System.out.println("-");
break;
case 1:
System.out.println("+");
break;
}
}
}
}
728x90
'알고리즘 문제풀이 > Beakjoon' 카테고리의 다른 글
백준 1703. 생장점 (JAVA) (0) | 2023.02.07 |
---|---|
백준 2010. 플러그 (JAVA) (0) | 2023.02.06 |
[백준] 별 찍기 모음 (JAVA) (0) | 2023.02.01 |
백준 2547. 사탕 선생 고창영 (JAVA) (0) | 2023.02.01 |
백준 2991. 사나운 개 (JAVA) (0) | 2023.01.31 |