백준/Java

[백준 자바] 12813번(이진수 연산) - and, or, xor, not

gamzaggang7 2024. 6. 20. 13:18
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