반응형
문제
-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진수를 출력하는 프로그램을 작성하시오.
문제풀이
n=int(input())
res=""
#01
if n==0:
print('0')
quit()
else:
while n:
#02
if n%(-2):
res="1"+res
n=n//-2+1
#03
else:
res='0'+res
n//=-2
print(res)
- #01 : 만약 n 값이 0이라면 "0"을 출력한다.
- #02 : -2진수로 나타내기 위해 -2로 나눈 나머지가 있다면
res="1"+res를 해준다.
이후 n=n//-2+1을 해준다. EX) -13 / -2 -> 몫: 7, 나머지: +1
n=n//-2를 진행할 경우 -13//-2 -> 6.5 -> 6이 나오게 된다. 그래서 +1을 해준다.
- #03 : 만약 -2로 나누어 떨어진 경우는
res="0"+res을 해주고 n을 -2로 나눈 몫을 저장한다.
n이 0이 될 때까지 반복해준 후 while문이 종료되면 res를 출력한다.
'프로그래밍 > 백준' 카테고리의 다른 글
[알고리즘] 백준 11502 파이썬 - 세 개의 소수 문제 (2) | 2023.03.23 |
---|---|
[알고리즘] 백준 5347 파이썬 - LCM (1) | 2023.03.22 |
[알고리즘] 백준 16479 파이썬 - 컵라면 측정하기 (2) | 2023.03.08 |
[알고리즘] 백준 17247 파이썬 - 택시 거리 (2) | 2023.03.07 |
[알고리즘] 백준 6502 파이썬 - 동혁 피자 (2) | 2023.03.06 |