문제
https://www.acmicpc.net/problem/2729
2729번: 이진수 덧셈
이진수 덧셈은 매우 간단하고, 십진수 덧셈과 비슷하게 하면 된다. 십진수 덧셈을 할 때는, 오른쪽부터 왼쪽으로 차례대로 숫자 하나씩 더하면 된다. 이진수 덧셈도 이와 비슷하게 하면 된다. 십
www.acmicpc.net
코드
package com.company;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;
import static java.lang.Integer.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int N = parseInt(br.readLine());
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
String a1 = st.nextToken();
String b1 = st.nextToken();
BigInteger a2 = new BigInteger(a1, 2);
BigInteger b2 = new BigInteger(b1, 2);
BigInteger ans = a2.add(b2);
sb.append(ans.toString(2) + "\\n");
}
System.out.println(sb.toString());
}
}
풀이
해당문제는 최대 80자리의 2진수까지 입력받는다. 이를 10진수로 계산하려면 2의 80승을 계산할 수 있어야 하는데 여기서 BigInteger 가 필요하다. 해당 타입은 제한이 없으므로 다음과 같이 계산을 진행하면 된다.
- 문자열 형태로 입력을 받는다.
- BigInteger 형태로 변환한다. 이때 2진수로 변환한다.
- 같은 타입으로 덧셈을 진행하고 2진수로 표현한다.
'백준' 카테고리의 다른 글
백준 10703 유성(JAVA) (0) | 2022.08.19 |
---|---|
백준 5766 할아버지는 유명해!(JAVA) (0) | 2022.08.17 |
백준 18311 왕복 (JAVA) (0) | 2022.08.15 |
백준 1316 그룹 단어 체커 (JAVA) (0) | 2022.08.15 |
백준 1316 그룹 단어 체커(JAVA) (0) | 2022.08.15 |