알고리즘 문제풀이/Beakjoon

백준 1247. 부호 (JAVA)

joah.k 2023. 2. 6. 20:55
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