728x90
난이도 - 브론즈 1
문제
이진수 덧셈은 매우 간단하고, 십진수 덧셈과 비슷하게 하면 된다. 십진수 덧셈을 할 때는, 오른쪽부터 왼쪽으로 차례대로 숫자 하나씩 더하면 된다. 이진수 덧셈도 이와 비슷하게 하면 된다. 십진수 덧셈은 외워야 할 덧셈이 많지만, 이진수 덧셈은 아래와 같이 5가지만 기억하면 된다.
- 0 + 0 = 0
- 1 + 0 = 1
- 0 + 1 = 1
- 1 + 1 = 10
- 1 + 1 + 1 = 11
두 이진수가 주어졌을 때, 그 합을 이진수로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 수 T(1<=T<=1,000)가 주어진다. 각 테스트 케이스는 숫자 2개로 이루어져있다. 이 숫자는 0과 1로만 이루어진 이진수이며, 길이는 최대 80자리이다. (덧셈 결과는 81자리가 될 수도 있다) 이진수는 0으로 시작할 수도 있다.
출력
각 테스트 케이스에 대해 입력으로 주어진 두 이진수의 합을 구해 이진수로 출력한다. 숫자의 앞에 불필요한 0이 붙으면 안 된다.
728x90
로직은 1252번에 사용한 코드와 같다.
2024.06.20 - [백준/Java] - [백준 자바] 1252번(이진수 덧셈) - 정규표현식, String.format()
[백준 자바] 1252번(이진수 덧셈) - 정규표현식, String.format()
난이도 - 브론즈 2문제두 개의 이진수를 입력받아 이를 더하는 프로그램을 작성하시오.입력첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있
gamzaggang7.tistory.com
import java.io.*;
import java.util.StringTokenizer;
public class Main2729 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
while (T-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String b1 = st.nextToken().replaceAll("^0+", "");
String b2 = st.nextToken().replaceAll("^0+", "");
if (b1.length() == 0)
b1 = "0";
if (b2.length() == 0)
b2 = "0";
bw.write(binarySum(b1, b2) + '\n');
}
bw.flush();
br.close();
bw.close();
}
static String binarySum(String b1, String b2) {
StringBuffer result = new StringBuffer();
int maxLength = Math.max(b1.length(), b2.length());
b1 = String.format("%" + maxLength + "s", b1).replace(' ', '0');
b2 = String.format("%" + maxLength + "s", b2).replace(' ', '0');
int carry = 0;
for (int i = maxLength - 1; i >= 0; i--) {
int sum = (b1.charAt(i) - '0') + (b2.charAt(i) - '0') + carry;
result.append(sum % 2);
carry = sum / 2;
}
if (carry == 1)
result.append(carry);
return result.reverse().toString();
}
}
728x90
'백준 > Java' 카테고리의 다른 글
[백준 자바] 8741번(이진수 합) (0) | 2024.06.21 |
---|---|
[백준 자바] 12813번(이진수 연산) - and, or, xor, not (0) | 2024.06.20 |
[백준 자바] 1252번(이진수 덧셈) - 정규표현식, String.format() (0) | 2024.06.20 |
[백준 자바] 2226번(이진수) (0) | 2024.06.20 |
[백준 자바] 1550번(16진수) - 16진수를 10진수로 바꾸기 (0) | 2024.06.19 |