ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [LeetCode / Kotlin] Add Binary
    ETC 2024. 7. 12. 01:14
    반응형

    문제

    Given two binary strings a and b, return their sum as a binary string.

     

    Example 1:

    Input: a = "11", b = "1"
    Output: "100"

     

    Example 2:

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

     

     

    Constraints:

    • 1 <= a.length, b.length <= 104
    • a and b consist only of '0' or '1' characters.
    • Each string does not contain leading zeros except for the zero itself.

     

    나의 풀이

    1. 자리수가 안맞는것을 포맷팅한다.

    2. 뒤에서부터 비교하며 연산을 한다.

     

    ... 유틸을 잘 알았다면 아래처럼 1줄로 가능함.

    더보기
    더보기

    class Solution {
        fun addBinary(a: String, b: String): String {
            return (a.toBigInteger(2) + b.toBigInteger(2)).toString(2)
        }
    }

     

    class Solution {
        fun addBinary(a: String, b: String): String {
            val ans = StringBuilder()
            
            val maxLength = maxOf(a.length, b.length)
            val formattedA = if (a.length != maxLength) { 
                "0".repeat(maxLength - a.length) + a
            } else a
            val formattedB = if (b.length != maxLength) { 
                "0".repeat(maxLength - b.length) + b
            } else b
            var flag = false
            
            for (i in 0 until maxLength) {
                val pa = formattedA.get(maxLength -1 - i)
                val pb = formattedB.get(maxLength -1 - i)
                
                val sum = pa.toString().toInt() + pb.toString().toInt() + (if (flag) 1 else 0)
                if (sum < 2) {
                    flag = false
                    ans.append(sum.toString())
                    continue
                }
                
                flag = true
                ans.append((sum - 2).toString())
                
            }
            
            if (flag) {
                ans.append("1")
            }
            
            return ans.reverse().toString()
            
        }
    }
    반응형
Designed by Tistory.