알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - -2진수(2089)

HRuler 2023. 6. 15. 13:23

1. 문제

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. 풀이

import sys
input = sys.stdin.readline

# n : 2진수로 변환할 10진수의 제곱 수
n = int(input())

result = ""

while True:
    if n == 0:
        result = "0" + result
        break
    remain = n % -2
    n //= -2
    if remain == 0:
        result = "0" + result
    else:
        n += 1
        result = "1" + result
    if n == 0:
        break
        
print(result)