https://leetcode.com/problems/add-binary/
두 이진수 a와 b가 주어질 때 합을 binary 문자열로 반환
숫자 올림은 1의 개수랑 관련 있어서 해당 부분을 확인하며 진행
public class Solution {
public string AddBinary(string a, string b) {
char[] aRev = a.Reverse().ToArray();
char[] bRev = b.Reverse().ToArray();
int ansLen = Math.Max(a.Length, b.Length) + 1;
char[] ansRev = new char[ansLen];
ansRev[ansLen - 1] = 'E';
int up = 0;
for (int i = 0; i < ansLen - 1; i++)
{
int oneCnt = up;
up = 0;
if (i < a.Length && aRev[i] == '1') oneCnt ++;
if (i < b.Length && bRev[i] == '1') oneCnt ++;
switch (oneCnt)
{
case 0:
ansRev[i] = '0';
break;
case 1:
ansRev[i] = '1';
break;
case 2:
ansRev[i] = '0';
up++;
break;
case 3:
ansRev[i] = '1';
up++;
break;
}
}
Array.Reverse(ansRev);
string answer = "";
if (up != 0)
{
ansRev[0] = '1';
answer = string.Concat(ansRev);
}
else
{
answer = string.Concat(ansRev);
answer = answer.Substring(1, answer.Length - 1);
}
return answer;
}
}