본문 바로가기

백준

백준 2729 이진수 덧셈(JAVA)

문제

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 가 필요하다. 해당 타입은 제한이 없으므로 다음과 같이 계산을 진행하면 된다.

  1. 문자열 형태로 입력을 받는다.
  2. BigInteger 형태로 변환한다. 이때 2진수로 변환한다.
  3. 같은 타입으로 덧셈을 진행하고 2진수로 표현한다.

'백준' 카테고리의 다른 글