본문 바로가기
Algorithm

[구현/수학] 백준 5893 17배 - Python

by jangThang 2022. 2. 25.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    5893번: 17배

    첫째 줄에 이진수 N이 주어진다. N은 최대 1000자리인 이진수이며, 0이 들어오는 경우는 없다.

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     2진수 <=> 10진수 변환 문제입니다.

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    [ Contents ] 1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하

    star7sss.tistory.com

     

     

     

    3. 코드

    N = input()
    
    num = 0
    digit = 0
    # 이진수 => 십진수 변환
    for i in N[::-1]:
        num += int(i)*(2**digit)
        digit += 1
    
    num *= 17 #17배
    res = ''
    # 십진수 => 이진수 변환
    while num != 0:
        res = str(num%2) + res
        num //= 2
    print(res)

     원리 원칙 그대로 구현한 코드입니다.

     2진수의 아랫자리부터 2의 지수승으로 곱해서 10진수를 구합니다. 이후 17배를 하고, 다시 2진수로 변환합니다.

     

     

    N = int(input(), 2) #이진수로 입력받기
    N *= 17 #17배
    print(bin(N)[2:]) #2진수 출력

     파이썬의 함수를 이용하면 더 쉽게 구현할 수 있습니다. 다른 언어와 달리, 라이브러리가 잘 되어있다는 게 느껴집니다...

     int() 함수는 default가 10진수이지만, n진수를 정해줄 수 있습니다.

     bin() 함수는 10진수를 2진수로 바꿔주며, 맨 앞에 이진수를 나타내는 0b만 제외하고 출력합니다.

     

    star가 되고나서 Tistory

    반응형

    댓글