여니의 Side Project/제주코딩베이스캠프 서포터즈 2기

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 재귀함수3

여니's 2021. 8. 4. 10:03

문제 접근 방법

1. 반복문의 경우
> Bottom - up (작은 문제에서 출발)

2. 재귀함수의 경우
> Top-down (큰 문제에서 출발)
recursion = 재귀함수
재귀함수에서는 종료조건이 꼭 있어야한다.!


# 2진수 구하기

(방법1 : 내장함수 사용)

print(bin(11)[2:]) #2진수, 0b 지우기 print(oct(11)) #8진수 print(hex(11)) #16진수

(방법2 : while문 사용)

result='' input_num=10 while True: if input_num%2==0: result+='0' else: result+='1' x=x//2 if x==1 or x==0: print(result[::-1]) break

(방법3 : 재귀함수 사용)

result = '' def 이진수구하기(입력값): if 입력값 == 1 or 입력값 == 0: print(입력값, end='') else: 이진수구하기(입력값 // 2) print(입력값 % 2, end='') def 이진수구하기2(입력값): if 입력값<2: return str(입력값) else: return str(이진수구하기(입력값//2)) + str(입력값%2) 이진수구하기(11) 이진수구하기2(11)


이진수구하기2(11) = '1011'
이진수구하기2(5) + str(1) = '101' + '1' = '1011'
이진수구하기2(2) + str(1) => str(1) + str(1) = '101'
이진수구하기2(1) + str(0)= > str(1) = '10'


# 문자열 뒤집기

result='' def 문자열뒤집기(문자열): if 문자열=='': return None else: 문자열뒤집기(문자열[1:]) result+=문자열[0] #내가 짠 방법 def 문자열뒤집기(문자열): if 문자열=='': return str(문자열) else: return str(문자열뒤집기(문자열[1:]))+str(문자열[0]) print(문자열뒤집기('hello'))

문자열뒤집기('hello')
문자열뒤집기('ello') + str(h) =olleh
문자열뒤집기('llo') + str(e) = olle
문자열뒤집기('lo') + str(l) = oll
문자열뒤집기('o')+str(l) = ol
문자열뒤집기('') + str(o)