[프로그래머스/Java] Lv.0 이진수 더하기

febCho·2024년 6월 12일
0

코딩테스트

목록 보기
218/253
post-thumbnail

문제

이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

- 제한사항

  • return 값은 이진수를 의미하는 문자열입니다.
  • 1 ≤ bin1, bin2의 길이 ≤ 10
  • bin1과 bin2는 0과 1로만 이루어져 있습니다.
  • bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.

풀이

일반적으로는 이진수 덧셈을 할 때, 굳이 십진수로 바꾸어 더한 뒤 다시 이진수로 바꾸는 건 비효율적이다. 그래서 변환하지 않고 덧셈을 해보려 했는데 하나의 케이스만 통과하고 다른 하나는 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);
    }
}

결과

profile
Done is better than perfect.

0개의 댓글