코린이의 소소한 공부노트

[LeetCode/Easy] 67. Add Binary 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 67. Add Binary

무지맘 2023. 5. 9. 15:41

1. Input

1) String a

2) String b

 

2. Output

1) 2진수를 담은 문자열 a,b의 합을 2진수 문자열로 반환

 

3. Constraint

1) 1 <= a.length, b.length <= 10^4

2) ab01로만 이루어져 있다.

3) ab0이 아닌 2진수이다.

 

4. Example

Input: a = "1010", b = "1011" -> Output: "10101"

 

5. Code

1) 첫 코드(2023/05/09)

class Solution {
    public String addBinary(String a, String b) {
        Stack<Integer> st = new Stack<>();
        int carry = 0, ai = a.length()-1, bi = b.length()-1;
        while(ai>=0 || bi>=0){
            int sum = carry;
            if(ai>=0)
                sum += a.charAt(ai--)=='1' ? 1 : 0;
            if(bi>=0)
                sum += b.charAt(bi--)=='1' ? 1 : 0;
            carry = sum/2;
            st.push(sum%2);
        }
        if(carry==1)
            st.push(1);
        StringBuilder sb = new StringBuilder();
        while(!st.empty())
            sb.append(st.pop());
        return sb.toString();
    }
}

- 스택을 이용하지 않고 바로 append를 한 다음, sb.reverse().toString()으로 반환해도 된다.