class Solution {
public:
string addBinary(string a, string b) {
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int carry = 0;
string answer = "";
for(int i = 0; i < min(a.length(),b.length()); i++) {
if(a[i] == b[i]) {
carry == 1 ? answer += "1" : answer += "0";
a[i] == '1' ? carry = 1 : carry = 0;
} else if(a[i] != b[i] && carry == 1) {
answer += "0";
carry = 1;
} else {
answer += "1";
carry = 0;
}
}
cout << answer;
for(int i = min(a.length(), b.length()); i < max(a.length(), b.length()); i++) {
if(a.length() > b.length()) {
a[i] - '0' == carry ? answer += "0" : answer += "1";
a[i] - '0' == carry && a[i] == '1' ? carry = 1 : carry = 0;
} else {
b[i] - '0' == carry ? answer += "0" : answer += "1";
b[i] - '0' == carry && b[i] == '1' ? carry = 1 : carry = 0;
}
}
if(carry)answer += to_string(carry);
reverse(answer.begin(), answer.end());
return answer;
}
};
뒤집어서 논리설계에서 사용하는 carry-adder 를 사용하여 이진법으로 계산한 이후 남은 부분을 이어붙이고 다시 뒤집어서 출력해주었다.
문제: https://leetcode.com/problems/add-binary/
Add Binary - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
'Problem Solving > 리트코드(leetcode)' 카테고리의 다른 글
[Leetcode/C++] 1047. Remove All Adjacent Duplicates In String (0) | 2022.01.26 |
---|---|
[Leetcode/C++] 1051. Height Checker (0) | 2022.01.24 |
[Leetcode/C++] 168. Excel Sheet Column Title (0) | 2022.01.24 |
[Leetcode/C++] 682. Baseball Game (0) | 2022.01.24 |
[Leetcode/C++] 206. Reverse Linked List (0) | 2022.01.24 |