[TIL] #11 Programmers - Binary Plus

Yeon·2023년 7월 30일
0

내일배움캠프 - Kotlin

목록 보기
15/58
post-thumbnail

프로그래머스 - 이진수 더하기

❓ Question

[문제 설명]
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

[제한사항]

  • return 값은 이진수를 의미하는 문자열입니다.
  • 1 ≤ bin1, bin2의 길이 ≤ 10
  • bin1과 bin2는 0과 1로만 이루어져 있습니다.
  • bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.



💡 Code

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)를 사용하여 입력된 이진수 문자열 bin1bin2를 10진수로 변환하여 저장
  • intBin1intBin2의 합을 구함
  • sum을 다시 이진수로 변환하여 문자열로 저장
  • 만약 이진수로 변환한 binString이 비어있으면 "0"을 반환, 그렇지 않으면 그대로 출력



➕ Base Conversion

1. toInt

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

2. BigInteger

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

0개의 댓글