본문 바로가기

Algorithm/String

(C++) - 백준(BOJ) 12813번 : 이진수 연산

반응형

www.acmicpc.net/problem/12813

 

12813번: 이진수 연산

총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

간단한 문자열 처리 문제였습니다.

 

 

풀이방법

 1. 각 연산마다 함수를 선언해 구현했습니다.

 

Code

#include <bits/stdc++.h>
using namespace std;

string andOp(string a,string b){
    string tmp = "";
    for(int i = 0; i < a.size(); i++){
        if(a[i] == b[i] && a[i] == '1') tmp+="1";
        else tmp += "0";
    }
    return tmp;
}

string orOp(string a,string b){
    string tmp = "";
    for(int i = 0; i < a.size(); i++){
        if(a[i] == b[i] && a[i] == '0') tmp+="0";
        else tmp += "1";
    }
    return tmp;
}

string xorOp(string a,string b){
    string tmp = "";
    for(int i = 0; i < a.size(); i++){
        if(a[i] != b[i]) tmp+="1";
        else tmp += "0";
    }
    return tmp;
}

string notOp(string a){
    string tmp = "";
    for(int i = 0; i < a.size(); i++){
        if(a[i]=='0') tmp+="1";
        else tmp+="0";
    }
    return tmp;
}

int main(){
    string a,b;
    cin >> a >> b;
    cout << andOp(a,b) <<'\n';
    cout << orOp(a,b) <<'\n';
    cout << xorOp(a,b) <<'\n';
    cout << notOp(a) <<'\n';
    cout << notOp(b) <<'\n';
}