본문 바로가기

백준

1252 이진수 덧셈

#include <iostream>
#include <string>
using namespace std;

int main() {
    string zero = "", b1, b2;
    cin >> b1>> b2;
    
    for(int i = 0; i < b1.length(); i++){
        if(b1[i] == 0)
            b1 = b1.substr(1, b1.length() - 2);
        else
            break;
    }
    cout << b1 << endl;
    
    int len = b1.length() - b2.length();
    if(len < 0){
        len = -1*len;
        for(int i = 0; i < len; i++)
            zero += "0";
        b1 = zero + b1;
    }
    else{
        for(int i = 0; i < len; i++)
            zero += "0";
        b2 = zero + b2;
    }
    
    string stack = "";
    int carry = 0;
    for(int i = 0; i < b1.length(); i++){
        int i1 = b1.length() - (i+1);
        int i2 = b2.length() - (i+1);
        int tmp = b1[i1] + b2[i2] - 2*'0' + carry;
        
        carry = tmp/2;
        stack += tmp%2 + '0';
    }
    for(int i=stack.length()-1; i >= 0; i--)
        printf("%c", stack[i]);
    
    return 0;
}

생각외로 복잡해서 내일 마저함.. 졸려 

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

10867 중복 빼고 정렬하기  (0) 2019.11.01
10989 수 정렬하기 3  (0) 2019.11.01
2033 반올림  (0) 2019.10.27
9455 박스  (0) 2019.10.27
10163 색종이  (0) 2019.10.27