기록을 남기자
카테고리
작성일
2023. 4. 15. 20:51
작성자
ssun_bear
반응형

문제

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진수로 표현이 된다. 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진수를 출력하는 프로그램을 작성하시오.

입력

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

출력

-2진법 수를 출력한다.

제한

  • -2,000,000,000 ≤ N ≤ 2,000,000,000

코드

n=int(input())
res=''

if n==0:
    print(0)
    exit
while n!=0:
    if n%(-2)!=0:
        res +='1'
        n=n//(-2)+1
    else:
        res +='0'
        n=n//(-2)

print(res[::-1])

문제 해결

-2진수라고 해서 놀랐지만 2진수 구하는 것처럼 나눠주고 나머지를 리스트에 넣어주고 역순으로 출력하면 원하는 답이 출력된다.

주어진 예시를 잘 분석하는 것이 중요

반응형