컴퓨터 알고리즘

10진수를 2진수로 변환하기(+ 스택으로 풀 수 있는 프로그래밍 문제, 파이썬)

The Ohgorithm 2025. 9. 28. 22:25

문제) 10진수 decimal을 입력받아 2진수로 변환하고 이를 문자열로 반환하는 함수를 구현하시오.

decimal 반환값
10 '1010'
27 '11011'
12345 '11000000111001'

 

 

 

 

 

# 10진수를 2진수로 변환하기
def solution(decimal):
  stack = []                      # 나머지를 담아둘 스택 (뒤집기 용도)
  while decimal > 0:               # decimal이 0이 될 때까지 반복
    remainder = decimal % 2        # 2로 나눈 나머지 (0 또는 1)
    stack.append(str(remainder))   # 나머지를 문자열로 바꿔서 스택에 push
    decimal //= 2                  # decimal을 2로 나눈 몫으로 갱신

  binary = ""                      # 최종 이진수 결과 문자열
  while stack:                     # 스택이 빌 때까지 pop
    binary += stack.pop()          # pop하면 거꾸로 꺼내짐 → 올바른 2진수 순서

  return binary                    # 변환된 2진수 문자열 반환

# 테스트
print(solution(10), solution(27), solution(12345))
# 10    -> 1010
# 27    -> 11011
# 12345 -> 11000000111001