백준 문제풀이/수학

[백준] 2089 -2진수 - python

peach_h 2022. 11. 14. 16:13

https://www.acmicpc.net/problem/2089

 

2089번: -2진수

-2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110

www.acmicpc.net

 

a = int(input())
x = ''

if a == 0:
    print(0)
    exit()      

while a:
        
    if a%(-2):
        a = a//-2 +1
        x = '1'+x
    else : 
        a//=-2
        x = '0' + x
        
print(int(x))

만약 입력받은 a를 -2로 나눴을 때 몫이 존재하면 x에 1을 추가,

존재하지 않으면 0을 추가하고 계속해서 -2로 나눠서 계산한다.

a = 0 일때 0출력을 안찍어주면 틀린 판정이다.

0일 때도 항상 입력해줘야함 !