이진수 더하기 : 문제 링크
algorithm 헤더의 reverse() 함수 사용법
1. 배열
reverse(a, a+5); => a 배열의 처음부터 다섯번째 요소까지 뒤집음
2. 문자열, 벡터
1) reverse(str.begin(), str.end()); => 문자열 str의 처음부터 끝까지 뒤집음
2) reverse(v.begin()+1, v.end()-1); => 벡터 v의 두번째부터 마지막 이전 요소까지 뒤집음
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int twoToten(int num) {
int result = 0, mul = 1;
while(num > 0) {
if(num % 2 == 1) result += mul;
mul *= 2;
num /= 10;
}
return result;
}
string solution(string bin1, string bin2) {
string answer = "";
int num1 = twoToten(stoi(bin1));
int num2 = twoToten(stoi(bin2));
int x = num1 + num2;
if(bin1 == "0" && bin2 == "0") return "0";
while(x != 0) {
if(x % 2 == 1) answer.push_back('1');
else answer.push_back('0');
x /= 2;
}
reverse(answer.begin(), answer.end());
return answer;
}