Programmers_LV0_이진수구하기

jkky98·2023년 2월 1일
0

문제논리 : 주어진 문자열형식으로 주어진 두 이진수를 합한 이진수를 문자열형식으로 나타내어라

이진수 덧셈논리는 생각나지 않아 십진수 덧셈논리를 사용하기위해 십진수 변환 함수를 만들어 십진수로 변환하여 서로 더한 후 그 수를 다시 이진수 변환 함수에 넣어 return하였다. 주어진 문자열형식의 이진수로만 더할 수 있는 코드가 있을지는 모르겠다. 십진수 -> 이진수 변환논리는 2로 나누어 몫과 나머지를 활용하면 된다는 예전 학교 수업에서의 아이디어를 활용하였다.

def deci(bin): #deci from binary
    list_tmp = list(bin)
    max_len = len(list_tmp)
    count = 0
    for index, i in enumerate(list_tmp):
        index = max_len-1-index
        if i == '1':
            count += 2**index
    return count

def binary(dec): #binary from deci
    list_ans = []
    while dec != 0:
        dec_share = dec // 2
        input_dec = dec % 2
        dec = dec_share
        list_ans.append(str(input_dec))
    list_ans.reverse()
    if len(list_ans) == 0:
        return '0'
    list_ans = ''.join(list_ans)
    return list_ans
        
def solution(bin1, bin2): #final solution
    bin1_10 = deci(bin1)
    bin2_10 = deci(bin2)
    ans_10 = bin1_10 + bin2_10
    
    return binary(ans_10)
profile
자바집사의 거북이 수련법

0개의 댓글