728x90
반응형
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
문제 해결
n이 주어졌을 때
n을 -2로 계속 나누어서 정답을 알아낼 수 있다.
ex) n = -13
-13 = (-2)*7 + 1
7 = (-2)*(-3) +1
-3 = (-2)*2 +1
2 = (-2)*(-1) + 0
-1 = (-2)*1 + 1
1 = (-2)*0 + 1
=> 110111
몫이 0이 될때까지 반복문을 쓰면 될 것이다.
그럼 n= 0일때는? 따로 빼주어서 0을 출력하도록 만들면 될 것이다.
import sys
input = sys.stdin.readline
def solve(n):
if n ==0:
return 0
ans =''
while n:
if n%(-2):
ans = '1'+ans
n = n//(-2) +1
else:
ans = '0' + ans
n = n//(-2)
return ans
if __name__=='__main__':
n = int(input())
print(solve(n))
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[Python] 백준 4195 친구 네트워크 (0) | 2022.12.21 |
---|---|
[Python] 백준 17013 골드바흐 파티션 (0) | 2022.12.21 |
[Python] 백준 1373 2진수 8진수 (0) | 2022.12.19 |
[Python] 백준 11655 ROT13 (0) | 2022.12.16 |
[Python] 백준 10820 문자열 분석 (0) | 2022.12.16 |
댓글