프로그래머스 - 이진수 더하기
[문제 설명]
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.[제한사항]
- return 값은 이진수를 의미하는 문자열입니다.
- 1 ≤ bin1, bin2의 길이 ≤ 10
- bin1과 bin2는 0과 1로만 이루어져 있습니다.
- bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.
class Solution {
fun solution(bin1: String, bin2: String): String = Integer.toBinaryString(bin1.toInt(2)+bin2.toInt(2))
}
풀어서 적어보자면 아래와 같다.
Class Solution {
fun solution(bin1: String, bin2: String): String {
val intBin1 = bin1.toInt(2)
val intBin2 = bin2.toInt(2)
val sum = intBin1 + intBin2
val binString = Integer.toBinaryString(sum)
return if(binString.isEmpty()) "0" else binString
}
}
toInt(2)
를 사용하여 입력된 이진수 문자열 bin1
과 bin2
를 10진수로 변환하여 저장intBin1
과 intBin2
의 합을 구함sum
을 다시 이진수로 변환하여 문자열로 저장binString
이 비어있으면 "0"을 반환, 그렇지 않으면 그대로 출력val binNum = "101010"
// 2진수를 10진수로 변환
val decimalNum1 = binNum.toInt(2)
println(decimalNum1) // 42
val octalNum "52"
// 8진수를 10진수로 변환
val decimalNum2 = octalNum.toInt(8)
println(decimalNum2) // 42
val hexadecimalNum = "2a"
// 16진수를 10진수로 변환
val decimalNum3 = hexadecimalNum.toInt(16)
println(decimalNum3) // 42
val binNum = "101010"
// 2진수를 10진수로 변환
val decimalNum1 = BigInteger(binNum, 2)
println(decimalNum1) // 42
val octalNum "52"
// 8진수를 10진수로 변환
val decimalNum2 = BigInteger(octalNum, 8)
println(decimalNum2) // 42
val hexadecimalNum = "2a"
// 16진수를 10진수로 변환
val decimalNum3 = BigInteger(hexadecimalNum, 16)
println(decimalNum3) // 42
[참고 사이트]
'[Kotlin, Java] 진법 변환: 16진수, 10진수, 8진수, 2진수', 코드 다이어리
'Kotlin에서 16진수 문자열을 정수로 변환', Techie Delight