몽상실현개발주의

[BOJ] 2089 / -2진수 / Python 파이썬 본문

Algorithm PS/BOJ

[BOJ] 2089 / -2진수 / Python 파이썬

migrationArc 2021. 6. 4. 11:30

[BOJ] 2089 / -2진수 / Python 파이썬

[BOJ] 2089 / -2진수 / Python 파이썬

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

 

풀이

-2 진수로 변환하는 문제이다.

 

-2 로 나누었을 때 나머지는 0 또는 1 이 나와야 2진수로 표현이 된다.

하지만 정수를 -2로 나누었을때 나머지는 -1, 0, 1 이 나오게 되므로 -1 이 나오는 경우를 고려해 주어야 한다.

 

나머지가 -1 이 나오는 경우 몫에 1을 더해 나머지가 0 또는 1 이 나오록 하였다.

 

N = int(input())
result = ""

while N != 0:
    div = N // -2
    if N % -2 < 0:
        div += 1
    result += str(N - (div*-2))
    N = div

if result:
    print(result[::-1])
else:
    print(0)

 

 

 

 

Comments