[백준] 2089번(-2진수)

·2023년 5월 14일

백준 문제풀이

목록 보기
68/159

백준 2089번


최종 제출 코드

number = int(input())
result = []

if number == 0: result.append(str(0))
  
while number != 0:
  if number % -2 != 0:
    result.append(str(1))
    number = number//-2+1
  else:
    result.append(str(number%-2))
    number = number//-2

print(''.join(result[::-1]))

number-2로 나누어 떨어질 때와 그렇지 않을 때를 구분하여 처리

  • number-2로 나누어 떨어지지 않으면 몫이 양수이든 음수이든 나머지가 -1로 나옴
  • 2진수에서는 01로만 숫자를 표현하기 때문에 몫에 1을 더해주고, 나머지를 1로 만들어주어야 한다.
    ex) -13//-2 = 6, -2*6 = -12 = -13-1 ⇒ -13//-2 = 6+1 = 7, -2*7 = -14 = -13+1

.
◼ 최초 입력값이 0일 땐 0을 출력

  • 이 경우 while문의 조건을 만족하지 못하기 때문에, 따로 처리를 해주지 않으면 출력값이 없어짐
profile
백엔드 개발자가 되고 싶어요(22.8.15~)

0개의 댓글