링크
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)