LeetCode – Add Binary java 자바 풀이

Sorbet·2021년 5월 12일
0

코테

목록 보기
35/35
class Solution {

    public String addBinary(String a, String b) {

        // 예외처리
        if (a == null || a.length() == 0) {
            return b;
        }
        if (b == null || b.length() == 0) {
            return a;
        }

        StringBuilder builder = new StringBuilder();
        char[] arra = a.toCharArray();
        char[] arrb = b.toCharArray();

        int pa = arra.length - 1;
        int pb = arrb.length - 1;
        int sum = 0;

        while ((pa >= 0 || pb >= 0)) {

            if (pa >= 0) { // 0이하 검사를 매번 해주는 이유는 a,b 문자열의 길이가 다른 경우가 있을때 대응
                sum += Character.getNumericValue(arra[pa]);
            }
            
            if (pb >= 0) {
                sum += Character.getNumericValue(arrb[pb]);
            }

            builder.append(sum % 2);
            // 3가지 케이스가 존재하는데
            // a,b,c (a문자,b문자,캐리)
            // 1+1+0 = 2
            // 1+1+1 = 3
            // 0+0+0 = 0
            // 0+0+1 = 1
            // 0+1+0 = 1
            // 0+1+1 = 0
            // 아무튼 뭐 8가지 경우의 수가 등장하며 0~3이 나오는데 이를 이진수 변환해서 그때그때 문자열에 추가
            // 추가로, 캐리가 남는다면 sum변수에 자동으로 저장된다!
            
            sum /= 2;
            pa--;
            pb--;



        }

        if (sum == 1) {
            builder.append(1);
        }

        return builder.reverse().toString();
    }

    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.addBinary("1111", "1"));//100

        System.out.println(s.addBinary("11", "11"));//110

    }
}
profile
Sorbet is good...!

0개의 댓글