반응형
문제
https://www.acmicpc.net/problem/2089
-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진수 구하는 것처럼 나눠주고 나머지를 리스트에 넣어주고 역순으로 출력하면 원하는 답이 출력된다.
주어진 예시를 잘 분석하는 것이 중요
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준] 2110번: 공유기 설치 - [Python/파이썬] (0) | 2023.04.15 |
---|---|
[백준] 2108번: 통계학 - [Python/파이썬] (0) | 2023.04.15 |
[백준] 2083번: 럭비 클럽 - [Python/파이썬] (0) | 2023.04.15 |
[백준] 2023번: 신기한 소수 - [Python/파이썬] (1) | 2023.04.15 |
[백준] 2011번: 암호코드 - [Python/파이썬] (0) | 2023.04.15 |