Level 1. コラスの推測


43.コーラの推測


コーディングテスト練習>練習問題>コーラ推測
https://programmers.co.kr/learn/courses/30/lessons/12943

問題の説明


Input value =
  • n=整数
  • Process =

  • 入力した数値が偶数/奇数であることを確認します
  • 偶数インスタントラーメン/2、奇数インスタントラーメン*3+1
  • Output value =

  • n~1のオペランド
  • 500回繰り返し、1回未満の場合-1
  • せいげんじょうけん


    入力
  • の数nは、1以上800万未満の整数である.
  • 問題の構想

    #00
    n = 6
    cnt = 0
    #01
    while True:
        if n == 1:
            0
        if n%2 == 0:
            n //=2
        else:
            n = (n*3)+1
        cnt+=1
    #02
        if n == 1:
            cnt
            break
        elif cnt == 500:
            -1
            break
    #03
    cnt

    問題を解く

    def solution(n):
        cnt = 0
        while True:
            if n == 1:
                return 0
            if n%2 == 0:
                n /=2
            else:
                n = (n*3)+1
            cnt+=1
            if n == 1:
                return cnt
            elif cnt == 500:  
                return -1
    
    # Code test
    n = 6
    solution(n)  

    の最後の部分


    nの値は常に変化しており再帰関数を使用することができるが、使用上制約(cntが500より大きい場合はreturn-1、または1ではreturn-0)がある場合は、上記while-if法を用いて簡単に実現するとより便利である...!