백준 11179번: 2진수 뒤집기

danbibibi·2021년 11월 16일

문제

문제 바로가기> 백준 11179번: 2진수 뒤집기

풀이

2로 나누어가며 이진수를 만들어준 후, 역으로 곱해가면 된다.

def solution():
    import sys
    input = sys.stdin.readline
    n = int(input())
    binary = []
    while n>1:
        binary.append(n%2)
        n=n//2
    binary.append(n)
    ans = 0
    digit = 1
    for i in range(len(binary)-1, -1, -1):
        ans+=digit*binary[i]
        digit *= 2
    print(ans)
solution()

다른 방법

print(int(''.join(reversed(bin(int(input()))[2:])),2))

bin 함수: 10진수 -> 2진수

bin(10)
>> '0b1010'

join 함수: 리스트에 있는 요소를 합쳐서 하나의 문자열로 반환

a = ['a', 'b', 'c', 'd', '1', '2', '3']
ans= "".join(a)
>> "abcd123"

2진수 -> 10진수

n = '0b110010'
m = int(n,2)
>> 50
profile
블로그 이전) https://danbibibi.tistory.com

0개의 댓글