본문 바로가기
👩‍💻 Programming/Coding Test 문제 풀이

[Baekjoon] 2089 -2진수(자바스크립트/NodeJs)

by codingBear 2023. 1. 9.
728x90
반응형

이번 문제는 아래 링크에서 풀어볼 수 있습니다.

 

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

 

728x90
반응형

댓글