코딩테스트 준비/백준

[백준] 2089번 -2진수 - 파이썬(Python)

youjin86 2021. 8. 27. 16:43

 

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로 N을 계속 나눠줌.

나머지가 1과 0이 나와야 함.

따라서 0이 나왔을 때는 그대로 진행하여 몫과 나머지 그대로 사용

-1이 나오면 몫에 +1을 해주고 나머지는 1로 처리

나온 나머지들을 앞에서부터 쌓아 ans 만듦.

 

 

코드

N=int(input())
ans=''
if N==0:
    print(0)
    exit()
    
while N!=0:
    if N%-2:
        N=N//-2+1
        ans='1'+ans
    else:
        N//=-2
        ans='0'+ans

print(int(ans))