코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
재귀함수를 이용한 3n + 1 수열
자연수 n이 주어집니다. n에서 시작하여 n이 짝수면 2로 나누고, n이 홀수면 3을 곱하고 1을 더하는 것을 n이 1이 되기 전까지 계속 반복하려고 합니다. 총 몇 번을 반복해야 1이 되는지를 계산하는 프로그램을 작성해보세요. 단, 재귀함수를 이용하여 문제를 해결해주세요.
입력 형식
첫 번째 줄에 정수 n이 주어집니다.
- 1 ≤ n ≤ 100
출력 형식
첫 번째 줄에 1이 되기까지 몇 번을 반복해야하는지 출력합니다.
입출력 예제
예제1
입력:
3
출력:
7
내가 짠 코드
n = int(input())
def f(n):
if n==1:
return 0
if n%2==0:
#짝수
return f(n//2) + 1
else :
return f(n*3+1) + 1
print(f(n))
이 문제에서는 1이 될때까지 재귀함수가 호출된 횟수를 카운팅해야한다.
베이스케이스에 대해 만약 1일 경우는 0을 리턴한다. 횟수가 0이므로
그리고 만약 재귀함수가 호출될때는 리턴값에 f(n//2) + 1 을 하거나 f(n*3+1) + 1 을 한다면 다음 재귀 호출 + 1 을 리턴한다. 이 때 홀수일 때와 짝수일 때를 다르게 호출해야한다.
728x90
'코드트리 챌린지' 카테고리의 다른 글
[코드트리] 최고의 33위치 / 완전탐색 (0) | 2023.10.27 |
---|---|
[코드트리] 100으로 나눈 나머지의 수열 / 재귀함수 (0) | 2023.10.26 |
[코드트리] 큰 숫자 자리수의 합 / 재귀함수 (1) | 2023.10.26 |
[코드트리 챌린지] 코드트리 챌린지 8주간의 실력 진단 결과 비교 + 8주차 실력진단 + 푼 문제들 정리 (0) | 2023.10.26 |
[코드트리 챌린지] 7주차 실력진단 + 코딩테스트 정리 ( 재귀함수 ) (1) | 2023.10.26 |