[문제]
10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요.
단 재귀함수를 이용해서 출력해야 합니다.
▣ 입력설명
첫 번째 줄에 10진수 N(1<=N<=1,000)이 주어집니다.
▣ 출력설명
첫 번째 줄에 이진수를 출력하세요.
▣ 입력예제 11
11
▣ 출력예제 1
1011
[내 코드]
res = []
def toBinary(n):
if n // 2 == 1: # 몫이 1이면
res.append(n%2) # 2로 나눴을 때의 나머지를 저장
res.append(n // 2)
while res:
print(res.pop(), end='') # 옆으로 펼쳐놓기 위해 사용
else: # 몫이 1이 아니면
# 그 나머지 저장
res.append(n%2)
# 2로 나누고
n = n // 2
toBinary(n) # 다시
n = int(input())
toBinary(n)
[비교 코드]
import sys
sys.stdin=open("input.txt", "r")
def DFS(x):
if x==0:
return
else:
DFS(x//2)
print(x%2, end='')
n=int(input())
DFS(n)
[내용]
- 알고리즘 문제에 자주 등장하는 쉬운 문제 였는데 생각보다 빠르게 풀지 못했었다.
- 재귀함수의 정의를 아직 잘 이해하지 못한것 같다. 코드가 생각보다 많이 길다.
'Coding Test > Python' 카테고리의 다른 글
| [python] 합이 같은 부분집합(DFS : 아마존 인터뷰) (0) | 2023.03.22 |
|---|---|
| [python] 부분집합 구하기(DFS) (0) | 2023.03.19 |
| [python] 가장 큰 수 (0) | 2023.02.26 |
| [Python] 마구간 정하기(결정알고리즘) (0) | 2023.02.17 |
| [Python] 뮤직비디오(결정알고리즘) (0) | 2023.02.16 |