[-2진수]-2089번
My answer
n=int(input())
tmp=""
while(n!=0):
if(n%(-2)!=0):
n=n//(-2)+1
tmp+='1'
else:
n=n//(-2)
tmp+='0'
if(tmp==""):
tmp+='0'
print(tmp[::-1])
더보기
-2진수라는 설명이 이해가 안가서 헷갈렸는데 그냥 2진수랑 똑같이 생각하는데 우선 2진수는 첫째자리부터 1,2,4,8,이런식인데 -2진수는 1,(-2),4,(-8) 이렇게 하면된다. 그래서 똑같이 2진수 구할 때 처럼 -2로 나눠주면 되는데 음수로 나눠주면 몫이 하나가 더해져야해서 저렇게 조건문을 달아서 해줬다. ex) -13을 2로 나눈 몫을 구하면 그냥 %를 쓰면 6이 나오는데, 우린 7이 나와야 한다. 그래야 나머지가 양수로 나온다. 나머지가 양수여야 얘네를 모아 진수를 만드므로 7이되도록 1을 추가해줬다. 이런식으로 나누어 떨어지지 않을경우에는 그냥 양수로 계산한 몫보다 1을 더해줘야 한다.
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #1929- 소수 구하기 (0) | 2021.12.07 |
---|---|
[Python/백준] #11576- [Base Conversion] (0) | 2021.12.07 |
[Python/백준] #11005- [진법 변환 2] (0) | 2021.12.05 |
[Python/백준] #9613- [GCD 합] (0) | 2021.12.04 |
[Python/백준] #1850- [최대공약수] (0) | 2021.12.04 |