문제 바로가기> 백준 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