백준 / -2진수 / 2089

박성완·2022년 2월 20일
0

백준

목록 보기
19/78
post-thumbnail

Question

문제링크
Silver 4

-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, 11011, 11000, 11001 등이다.

10진법의 수를 입력 받아서 -2진수를 출력하는 프로그램을 작성하시오.

Input

첫 줄에 10진법으로 표현된 수 N이 주어진다.

-13

Output

-2진법 수를 출력한다.

110111

Logic

기본구조 : while
1. 진법 변환 계산을 하는 기본 방식과 동일하게 -2진법을 진행시킨다.
2. 2로 나눈 나머지가 0이라면 수를 -2로 나눈 나머지를 추가한다. 이때 계산은 역순으로 된다.
3. 나누어 떨어지지 않다면 몫에 1을 제하고 -2로 나눈 몫을 저장시키고, 1을 추가한다.

Code

N=int(input())
stack=[]
while(N!=0):
    if N%2==0:
        div,mod = divmod(N,-2)
        stack.append(str(mod))
    else:
        div=(N-1)//(-2)
        stack.append('1')
    N=div
print(0) if not stack else print("".join(stack[::-1]))

0개의 댓글