반응형
문제 설명
-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진법 수를 출력한다.
예제 입력, 예제 출력
| -13 | 110111 |
코드 및 설명
n = int(input())
answer = []
while True:
if n == 0:
answer.append(0)
break
if n == 1:
answer.append(1)
break
if n % 2 == 0:
answer.append(0)
n = n // -2
else:
answer.append(1)
n = (n // -2) + 1
print("".join(str(answer[i]) for i in range(len(answer)-1, -1, -1)))
이 문제는 10진수를 -2진수로 출력하는 문제이다.
예제의 -13을
-2 | -13
-2 | 7 ---------- 1
-2 | -3 ---------- 1
-2 | 2 ---------- 1
-2 | -1 ---------- 0
1 ---------- 1
답은 110111이다.
-13을 계속 -2로 나눠주면서 나머지값을 확인하고 나머지가 0이면 0을 넣어주고, 0이 아니면 1을 넣어주면 된다.
그 후 역순으로 보여주면 답을 구할 수 있다.
반응형
'삽집하는 개발들 > 알고리즘' 카테고리의 다른 글
| [112일차] 팰린드롬인지 확인하기 - 백준 - 10988(python - 문자열, 구현) (60) | 2024.01.26 |
|---|---|
| [111일차] 진법 변환 2 - 백준 - 11005(python - 수학, 구현) (54) | 2024.01.21 |
| [109일차] 8진수 2진수 - 백준 - 1212(python - 수학, 구현) (52) | 2024.01.18 |
| [109일차] 2진수 8진수 - 백준 - 1373(python - 수학, 문자열) (50) | 2024.01.18 |
| [108일차] 숨바꼭질 6 - 백준 - 17087(python - 수학, 정수론, 유클리드 호제) (44) | 2024.01.17 |