[재귀함수] BOJ 10829 - 이진수 변환 / python

지연·2022년 1월 13일
0

BOJ

목록 보기
2/7

링크

https://www.acmicpc.net/problem/10829

문제

💡 사고의 흐름

  • 입력 받은 수를 2로 나눈 몫이 1이 될 때까지 계속해서 나누어준다.
  • 이 때, 나머지 값이 결과로 나와야 한다.
  • 가장 일반적인 경우는 x==1 or x==0인 경우로 이때는 x값을 출력한다.
  • 나머지 경우에는 binary(x//2)를 호출한다.
  • binary(x//2)가 호출이 끝나면, 나머지를 출력한다.

-> 다시 정리하면 x=14인 경우,

  • binary(14)->binary(7)->binary(3)->binary(1) 순서로 호출하고
    binary(1)일때 1 출력, binary(3) 실행 후엔 다음 코드가 읽히게 되어 3%2 출력,, 이런 식으로 스택에 쌓은 순서대로 x%2를 출력한다!

Code

## template
import sys
def binary(x):
  if x==1 or x==0:
    print(x,end='')
  else:
    binary(x//2)
    print(x%2,end='')
    
if __name__=='__main__':
  n = int(sys.stdin.readline())
  binary(n)
profile
기록하는 삶. 알고리즘 공부를 기록합니다!

0개의 댓글