728x90
난이도 - 브론즈 2
문제
총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 이진수 A, 둘째 줄에 이진수 B가 주어진다. 두 이진수의 길이는 모두 100,000이다. 예제의 경우에만 길이가 10이며, 예제는 채점하지 않는다.
출력
첫째 줄부터 한 줄에 하나씩 차례대로 A & B, A | B, A ^ B, ~A, ~B를 출력한다.
728x90
AND | 둘 다 1일 때만 연산 결과가 1 |
OR | 둘 다 0일 때만 연산 결과가 0 |
XOR | 두 값이 다르면 1, 같으면 0 |
NOT | 해당 값이 0이면 1, 1이면 0 |
import java.io.*;
public class Main12813 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String b1 = br.readLine();
String b2 = br.readLine();
bw.write(andOperation(b1, b2) + '\n'
+ orOperation(b1, b2) + '\n'
+ xorOperation(b1, b2) + '\n'
+ notOperation(b1) + '\n'
+ notOperation(b2));
bw.flush();
br.close();
bw.close();
}
static String andOperation(String b1, String b2) {
StringBuffer result = new StringBuffer();
for (int i = 0; i < 100000; i++)
result.append(b1.charAt(i) == '1' && b2.charAt(i) == '1' ? '1' : '0');
return result.toString();
}
static String orOperation(String b1, String b2) {
StringBuffer result = new StringBuffer();
for (int i = 0; i < 100000; i++)
result.append(b1.charAt(i) == '1' || b2.charAt(i) == '1' ? '1' : '0');
return result.toString();
}
static String xorOperation(String b1, String b2) {
StringBuffer result = new StringBuffer();
for (int i = 0; i < 100000; i++)
result.append(b1.charAt(i) != b2.charAt(i) ? '1' : '0');
return result.toString();
}
static String notOperation(String b1) {
StringBuffer result = new StringBuffer();
for (int i = 0; i < 100000; i++)
result.append(b1.charAt(i) == '0' ? '1' : '0');
return result.toString();
}
}
728x90
'백준 > Java' 카테고리의 다른 글
[백준 자바] 2153번(소수 단어) (0) | 2024.06.22 |
---|---|
[백준 자바] 8741번(이진수 합) (0) | 2024.06.21 |
[백준 자바] 2729번(이진수 덧셈) (0) | 2024.06.20 |
[백준 자바] 1252번(이진수 덧셈) - 정규표현식, String.format() (0) | 2024.06.20 |
[백준 자바] 2226번(이진수) (0) | 2024.06.20 |