파이썬/문제

[코드트리] 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 으로 숫자가 바로 출력된다!!!

 

 

🍉 깨달은 점 및 정리