코딩 테스트/프로그래머스
[Python] 프로그래머스 콜라츠 수열 만들기
위시리
2024. 10. 1. 15:35
문제 분석
- 모든 자연수 x에 대해
- x가 짝수이면 x = x/2
- x가 홀수이면 x = 3*x+1
- 계속 하면 x=1이 되는가?
- 위 과정을 거쳐간 모든 수를 기록한 수열 : 콜라츠 수
- 1000 보다 작은 수는 언젠가 1에 도달한다
- 1000보다 작거나 같은 양의 정수 n이 주어질 때, 초기값이 n인 콜라츠 수열을 return하는 함수 sol
코드 설계
- 재귀
- 종료조건 : x=1
- 중간 계산값 answer.append(x)
정답 코드
def solution(n):
if n == 1 :
answer.append(n)
return answer
else :
answer.append(n)
if n % 2 == 0 :
solution(n//2)
else :
solution(n*3+1)
return answer
answer = []
다른 사람 코드
def solution(n):
answer = [n]
while n > 1:
if n % 2 == 0:
n //= 2
else:
n = 3 * n + 1
answer.append(n)
return answer