파이썬/문제
[코드트리] 1이 되는 순간까지 (미해결)
낑깡H
2022. 9. 11. 17:19
🍒 문제 링크
https://www.codetree.ai/missions/5/problems/until-the-moment-I-reach-one/introduction
🍒 문제 분석
진행한 작업의 횟수 -> cnt 변수를 설정하고 거기에 누적하여 더하려고 했음.
N % 2 == 0 을 통해 조건을 구분지어 f(N // 2) 혹은 f(N // 3) 을 return
🍒 내 코드
N = int(input())
def f(N):
cnt = 0
if N == 0:
return cnt # 처음엔 return N으로 했다가 수정
else:
if (N % 2) == 0:
cnt += 1
return f(N // 2)
else:
cnt += 1
return f(N // 3)
print(f(N))
🍓 내 해결 과정
idle 상에서는 indent 에러가 계속 발생하는데 왜인지 모르겠음,,,,
🌽 다른 사람 코드
# 변수 선언 및 입력:
n = int(input())
# n에서 시작하여 1이 되기 위해
# 거쳐야하는 횟수를 반환하는 함수입니다.
def get_num(n):
# 1이면 더 이상 진행할 작업이 없으므로 0회가 더 필요합니다.
if n == 1:
return 0
# 짝수라면 2로 나눠 진행했을 때의 횟수 + 1번이 소요됩니다.
if n % 2 == 0:
return get_num(n // 2) + 1
# 홀수라면 3으로 나누었을 때의 몫을 가지고 진행했을 때의 횟수 + 1번
# 소요됩니다.
else:
return get_num(n // 3) + 1
print(get_num(n))
종결 조건이 n == 0이 아니고 n ==1 임
굳이 cnt 안쓰고 +1 하면 1+1+1...+0 으로 숫자가 바로 출력된다!!!
🍉 깨달은 점 및 정리