Algorithm PS/BOJ
[BOJ] 2089 / -2진수 / Python 파이썬
migrationArc
2021. 6. 4. 11:30
[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)