문제 9

윤수환·2025년 8월 18일

코딩테스트(python)

목록 보기
9/9

10진수 decimal을 입력받아 2진수로 변환하고 이를 문자열로 반환하는 solution() 함수를 구현하세요.


권장 시간: 30분
권장 시간 복잡도: O(logN)
출제: 저자 출제


제약 조건

  • decimal은 1,000만 이하의 양의 정수

풀이

  1. 10진수 N을 2로 나눈 나머지를 저장하고 N은 2로 나눔
  2. 몫이 0이 아니라면 나머지를 버리고 다시 1을 수행
  3. 모든 과정이 끝나고 1에서 저장한 수를 뒤부터 순서대로 가져와 붙이기
def solution(decimal):
    stack = []
    while decimal > 0:
        remainder = decimal % 2
        stack.append(str(remainder))
        decimal //= 2
    binary = ""
    while stack:
        binary += stack.pop()
        
    return binary

시간 복잡도

  • N은 이진수로 변환할 숫자
  • N을 이진수로 변환하는 과정은 N이 1이 될 때까지 2로 게속 나누므로 연산횟수는 O(logN)
  • 문자열의 +=연산자는 수행할 때마다 객체를 새로 생성. 따라서 시간 복잡도는 O((logN)^2)

0개의 댓글