반응형
문제
-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
예제 입력-13
|
예제 출력110111
|
풀이
처음에 어떻게 풀어야 하나 고민이 좀 되었는데 의외로 그냥 n진수 변환 방법을 통해 해결할 수 있었다.
입력 받은 숫자를 -2로 나눈 것의 나머지를 기록한다. 이 나머지는 각각의 자리수에 해당한다.
몫이 0이 될 때까지 나누는 것을 반복한다.
마지막으로 나온 결과를 뒤집어 출력하면 정답이 나온다.
n = int(input())
if n == 0:
print(0)
else:
ans = ''
while n:
ans += str(n%2)
n//=2
n*=-1
print(ans[::-1])
반응형
'알고리즘 연습 > 수학, 정수론, 기하' 카테고리의 다른 글
[🥈4 / 백준 2477 / 파이썬] 참외밭 (0) | 2022.05.13 |
---|---|
[🥉3 / 백준 3034 / 파이썬] 앵그리 창영 (0) | 2022.05.12 |
[🥈1 / 백준 1747 / 파이썬] 소수&팰린드롬 (0) | 2022.04.20 |
[🥉1 / 백준 1834 / 파이썬] 나머지와 몫이 같은 수 (0) | 2022.04.19 |
[🥈3 / 백준 2407 / 파이썬] 조합 (0) | 2022.03.31 |