백준 - 이진수덧셈(2729)

정민주·2024년 1월 26일

코테

목록 보기
3/95
post-thumbnail

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 첫 번째 줄에서 테스트 케이스의 수를 읽는다.
        int T = Integer.parseInt(br.readLine());

        for (int t = 0; t < T; t++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String A = st.nextToken();
            String B = st.nextToken();

            // BigInteger 형변환 하면서 10진수로 바꿔준다. 
            BigInteger A_binary = new BigInteger(A, 2);
            BigInteger B_binary = new BigInteger(B, 2);

            BigInteger sum = A_binary.add(B_binary);

            // 2진수로 변환
            String sum_binary = sum.toString(2);

            System.out.println(sum_binary);
        }
    }
}

⭐새롭게 알게 된 점
BigInteger : int는 32비트까지만 담음. 그러나 문제는 2의 81승까지 계산해야 했기에 int보다 더 큰 BigIneger라는 자료형을 사용. 해당 자료형은 한계가 없음

  • BigInteger(String val, 2) : BigInteger의 생성자 형태로, 첫 번째 매개변수는 String 변수를, 두 번째 매개변수에는 변환할 진수를 지정한다. 특정 진수를 입력하지 않고 첫 번째 매개변수만 입력할 경우 10진수로 간주한다.

0개의 댓글