지난 번에 2진수 -> 10진수 변환 후, 더하고, 10진수 -> 2진수로 변환하는 방법은 틀린 것이라는 글을 보았다.
이유는, 자료형의 범위때문에 잘못된 값이 출력되기 때문이라고 ...
그래서 다들 StringBuilder를 사용하면서 푸는 것을 확인했다.
다른 사람 코드
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();
}
}
StringBuffer와 StringBuilder는 매우 긴 String에 많은 String연산을 매우 반복해야하는 경우에 쓰인다고 한다. 이와 관련한 내용은 따로 정리하는 것으로 한다.
그리고 몰랐던 함수들도 알아가는 문제가 되었다. 다음에 다시 한 번 풀어봐야겠음.