이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
일반적으로는 이진수 덧셈을 할 때, 굳이 십진수로 바꾸어 더한 뒤 다시 이진수로 바꾸는 건 비효율적이다. 그래서 변환하지 않고 덧셈을 해보려 했는데 하나의 케이스만 통과하고 다른 하나는 ArrayIndexOutOfBoundsException이 발생했다.
그래서 방법을 바꾸었다. 찾아 보니 Integer를 활용한 진법 변환이 가능했다. (참고)
2진법을 10진법으로 바꾸 경우 두 번째 인자에 2를 넣어주면 간단하게 변환이 가능하다. 그렇게 변환한 bin1과 bin2를 더한 뒤, Integer.toBinaryString()이라는 메서드를 통해 다시 이진수로 바꾸어 return 했다.
class Solution {
public String solution(String bin1, String bin2) {
int num1 = Integer.parseInt(bin1, 2);
int num2 = Integer.parseInt(bin2, 2);
int sum = num1 + num2;
return Integer.toBinaryString(sum);
}
}
