Problem
2진수 두개를 받아서 합한 결과를 리턴하는 문제입니다.
Solution
처음에는 2진수 -> 10진수 변환 후 더하려고 했는데 2진수 길이가 너무 길어서 그런지 NumberFormatException
이 발생했습니다.
그래서 그냥 1 의 자리부터 더한 다음에 뒤집는 방식으로 구현했습니다.
Stack 자료구조를 써도 됩니다.
Java Code
class Solution {
public String addBinary(String a, String b) {
int aIdx = a.length() - 1;
int bIdx = b.length() - 1;
int sum = 0;
StringBuilder sb = new StringBuilder();
while (aIdx >= 0 || bIdx >= 0) {
if (aIdx >= 0) sum += a.charAt(aIdx--) - '0';
if (bIdx >= 0) sum += b.charAt(bIdx--) - '0';
sb.append(sum % 2);
sum /= 2;
}
if (sum == 1) sb.append(sum);
return sb.reverse().toString();
}
}
'알고리즘 문제 > LeetCode' 카테고리의 다른 글
[LeetCode Medium] Robot Bounded In Circle (Java) (0) | 2021.04.08 |
---|---|
[LeetCode Easy] Partition Array Into Three Parts With Equal Sum (Java) (2) | 2021.04.08 |
[LeetCode Medium] Non-decreasing Array (Java) (0) | 2021.04.01 |
[LeetCode Easy] Last Stone Weight (Java) (0) | 2021.04.01 |
[LeetCode Easy] Maximum Number of Balloons (Java) (0) | 2021.03.31 |