728x90
반응형
백준알고리즘
- Bronze 3 -
#1247. 부호 by Java and Javascript
문제
출처: https://www.acmicpc.net/problem/1247
접근 방법
1. 주어지는 정수의 절댓값이 int의 범위를 넘어섬 >> BigInteger 사용
2. BigInteger들을 더해야하므로 x.add(bigInt) 사용
3. BigInteger를 사용하기 때문에 Java에서는 compareTo() 이용
풀이
▶ Java
import java.io.*;
import java.math.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = 0;
BigInteger zero = new BigInteger("0"); // 부호판별시 사용할 BigInt 0
for(int i=0; i<3; i++) { // 총 3문제가 나온다고 했으므로 3번 반복
n = Integer.parseInt(br.readLine());
BigInteger s = new BigInteger("0"); // n개의 수를 더해줄 BigInt 변수 선언
for(int j=0; j<n; j++) {
BigInteger bi = new BigInteger(br.readLine());
s = s.add(bi); // 변수 s에 BigInt bi를 더해준 값을 저장
}
// A.compareTo(B) : A와 B를 비교하여 0, 1, -1 반환(A=B / A>B / A<B)
if(s.compareTo(zero) == 0) {
System.out.println(0);
} else if (s.compareTo(zero) == -1) {
System.out.println("-");
} else {
System.out.println("+");
}
}
}
}
▶ Javascript (node.js)
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().trim().split('\n').map(BigInt);
var zero = BigInt("0");
for(var i=0; i<input.length;){
var n = Number(input[i]);
var s = BigInt("0");
for(var j=1; j<=n; j++){
s += input[i+j];
}
var result = s.toString(); // BigInt를 숫자화
if(result == 0){
console.log(0);
} else if (result > 0){
console.log("+");
} else {
console.log("-");
}
i += (n+1);
}
Javascript로 푸는 경우 이미 입력값들을 배열에 저장한 뒤 사용하기 때문에, 반복문을 돌릴 때 주의해야 한다.
또한 Java와 달리 BigInt의 값은 "1n"의 형식으로 n이 붙어서 나오기 때문에, toString()을 이용해서 숫자화 해준 뒤 비교해줘야 한다.
결과
End.
heisely's 괴발개발 개발일지
728x90
반응형
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] #1284. 집 주소 (by Java and Javascript) (0) | 2022.09.09 |
---|---|
[백준알고리즘] #1267. 핸드폰요금 (by Java and Javascript) (0) | 2022.09.08 |
[백준알고리즘] #1085. 직사각형에서 탈출(by Java & Javascript) (0) | 2022.09.06 |
[백준알고리즘] Bronze 4 완료(feat. 잔디심기) (0) | 2022.09.05 |
[백준알고리즘] #16199. 나이 계산하기 (by JAVA and node.js) (0) | 2022.06.02 |