이번 문제는 아래 링크에서 풀어볼 수 있습니다.
2089번: -2진수
-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, 110
www.acmicpc.net
문제
-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
예제 입력 1
-13
예제 출력 1
110111
정답 코드
답안 1
문제 풀이
진수 계산법을 응용해서 풀 수 있는 문제이다. 10진수를 2진수로 변환하기 위해서는 먼저 10진수 값을 더 이상 2로 나눌 수 없을 때까지 나눠야 한다. 10진수가 -13으로 주어졌다 가정하고 계산과정은 아래와 같다.
10진수: -13
나머지: -13 % -2 = 1
-13 / -2: 6.5
올림 계산 값: 7
10진수: 7
나머지: 7 % -2 = 1
7 / -2: -3.5
올림 계산 값: -3
10진수: -3
나머지: -3 % -2 = 1
-3 / -2: 1.5
올림 계산 값: 2
10진수: 2
나머지: 2 % -2 = 0
2 / -2: -1
올림 계산 값: -1
10진수: -1
나머지: -1 % -2 = 1
-1 / -2: 0.5
올림 계산 값: 1
10진수: 1
나머지: 1 % -2 = 1
1 / -2: -0.5
올림 계산 값: -0
위 계산 과정에서 나머지를 결괏값 result 변수에 차례대로 붙여넣는다. 올림 계산을 하는 이유는 -13 = -2 *(7) + 1이 성립하기 때문이다. 즉 소수점으로 반환되는 나눗셈 결괏값을 정수로 변환하여 다음 계산에 활용하는 것이다. n이 0이 아닐 동안 while 반복문을 돌며 위의 계산을 수행하면 성공적으로 결괏값을 구할 수 있다.
함께 보기
https://suri78.tistory.com/119
[백준알고리즘] 2089번: -2진수 -Python
[백준알고리즘] 2089번: -2진수 -Python https://www.acmicpc.net/problem/2089 2089번: -2진수 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2
suri78.tistory.com
https://velog.io/@rkio/%EB%B0%B1%EC%A4%80-Javascript-2089
[백준 | Javascript] 2089
알고리즘 기초 1/2. 301 - 수학 1(연습)2089번. -2진수2089번 문제 링크어떤 정답이든 똑같은 원리가 사용된다. 사용된 메서드가 Math.ceil이냐 Math.floor이냐에 따라 달라질 뿐이다.예시를 통해 코드를 살
velog.io
https://blog.naver.com/aroaroro/220597221604
알고리즘 10진수 에서 2진수 변환법 ! 2진수 에서 10진수 변환법 ~!! 모든 변환법!! [10진법 2진법]
안녕하세요.~ 반갑습니다. 오늘 알고리즘 에는 진법에 관해서 한번 올려보려고 합니다.!! 저도 진법...
blog.naver.com
'👩💻 Programming > Coding Test 문제 풀이' 카테고리의 다른 글
[Baekjoon] 11005 진법 변환 2(자바스크립트/NodeJs) (0) | 2023.01.10 |
---|---|
[Baekjoon] 17103 골드바흐 파티션(자바스크립트/NodeJs) (1) | 2023.01.09 |
[Baekjoon] 1212 8진수 2진수(자바스크립트/NodeJs) (1) | 2023.01.09 |
[Baekjoon] 1373 2진수 8진수(자바스크립트/NodeJs) (0) | 2023.01.09 |
[Baekjoon] 17087 숨바꼭질 6(자바스크립트/NodeJs) (0) | 2023.01.06 |
댓글