2089번 : -2진수 - Python

FriOct·2023년 2월 12일
0

PS

목록 보기
42/108

문제

https://www.acmicpc.net/problem/2089

풀이

진수 계산법을 이용했다. N을 -2로 나누는 방식으로 구현했다. 단 나머지는 1, 0 이 나와야 하므로 -2로 나누어 떨어지지 않는 경우 몫에 1을 더하여 나머지가 1이 되게 한다.

13=2(7)+1-13=-2*(7)+1
7=2(3)+1\quad\quad7=-2*(-3)+1
  3=2(2)+1\;\,-3=-2*(2)+1
2=2(1)+0\quad\quad2=-2*(-1)+0
  1=2(1)+1\;\,-1=-2*(1)+1
1=2(0)+1\quad\quad1=-2*(0)+1

에서 나머지들을 아래에서 위 순서대로 출력하면 된다.

코드

from sys import stdin

input = stdin.readline

n = int(input())
result =''

while n!=0:
    if n%(-2): 
        result = '1' + result #-2로 나누어 떨어지지 않으니 1을 추가한다.
        n = n//-2+1 #-2로 나누어 떨어지지 않는경우 나머지가 -1이 아닌 1이 되게 하려먼 목을 하나 더해줘야 한다.
    else:
        result = '0' + result #-2로 나누어 떨어지니 0을 추가한다.
        n = n//-2

if not result: #n이 0이어서 result에 아무것도 없다면 0을 출력해야 한다.
    result = '0'    

print(''.join(result))
profile
꿈 많은 개발자

0개의 댓글