add binary
Add Binary
- 이진 값이 들어 있는 a, b를 서로 더합니다. Long 범위를 넘는 케이스가 있어 BigInteger를 사용했습니다. 더한 숫자 값을 다시 각 원소별 리스트로 변환합니다.
- 리스트에서 오른쪽부터 왼쪽으로 가면서 값이 2 이상인 경우 2로 나눈 나머지로 대체하고, 그 전 인덱스 값에 1을 더해 캐리를 흉내냅니다.
- 첫번째에서 캐리가 발생하면 지금까지의 결과물에 1을 붙이고 리턴합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fun addBinary(
a: String,
b: String,
): String {
val sum = (a.toBigInteger() + b.toBigInteger()).toString().map { it.digitToInt() }.toMutableList()
for (i in sum.size - 1 downTo 0) {
if (sum[i] >= 2) {
sum[i] = sum[i] % 2
if (i == 0) {
return "1${sum.joinToString("")}"
}
sum[i - 1] = sum[i - 1] + 1
}
}
return sum.joinToString("")
}
This post is licensed under CC BY 4.0 by the author.