λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
CodingTest

[Python]λ°±μ€€ 1110번::λ”ν•˜κΈ° 사이클

by λ„μΊλ¦¬πŸ± 2021. 4. 29.
λ°˜μ‘ν˜•

문제:

0보닀 ν¬κ±°λ‚˜ κ°™κ³ , 99보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜κ°€ μ£Όμ–΄μ§ˆ λ•Œ λ‹€μŒκ³Ό 같은 연산을 ν•  수 μžˆλ‹€. λ¨Όμ € 주어진 μˆ˜κ°€ 10보닀 μž‘λ‹€λ©΄ μ•žμ— 0을 λΆ™μ—¬ 두 자리 수둜 λ§Œλ“€κ³ , 각 자리의 숫자λ₯Ό λ”ν•œλ‹€. κ·Έ λ‹€μŒ, 주어진 수의 κ°€μž₯ 였λ₯Έμͺ½ 자리 μˆ˜μ™€ μ•žμ—μ„œ κ΅¬ν•œ ν•©μ˜ κ°€μž₯ 였λ₯Έμͺ½ 자리 수λ₯Ό 이어 뢙이면 μƒˆλ‘œμš΄ 수λ₯Ό λ§Œλ“€ 수 μžˆλ‹€. λ‹€μŒ 예λ₯Ό 보자.

26λΆ€ν„° μ‹œμž‘ν•œλ‹€. 2+6 = 8이닀. μƒˆλ‘œμš΄ μˆ˜λŠ” 68이닀. 6+8 = 14이닀. μƒˆλ‘œμš΄ μˆ˜λŠ” 84이닀. 8+4 = 12이닀. μƒˆλ‘œμš΄ μˆ˜λŠ” 42이닀. 4+2 = 6이닀. μƒˆλ‘œμš΄ μˆ˜λŠ” 26이닀.

μœ„μ˜ μ˜ˆλŠ” 4λ²ˆλ§Œμ— μ›λž˜ 수둜 λŒμ•„μ˜¬ 수 μžˆλ‹€. λ”°λΌμ„œ 26의 μ‚¬μ΄ν΄μ˜ κΈΈμ΄λŠ” 4이닀.

 

μž…λ ₯:

첫째 쀄에 N이 주어진닀. N은 0보닀 ν¬κ±°λ‚˜ κ°™κ³ , 99보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜μ΄λ‹€.

 

좜λ ₯:

첫째 쀄에 N의 사이클 길이λ₯Ό 좜λ ₯ν•œλ‹€.

 

πŸ‘‡λ‚΄ 풀이(μ •λ‹΅ μ—¬λΆ€ O) 

#1110 λ”ν•˜κΈ° 사이클

N = int(input())
real_N = N
cycle = 0

global temp_result

while(True):    
    if(N < 10):
        # 5 > 05
        # 0+5 = 5
        temp = str(N)+str(N)
        temp_result = int(temp)
        cycle+=1
        N = temp_result
        if(real_N == N):
            break
    else:
        # 57
        # 5+7 =12
        # >> 72
        # 12
        # 1+2 = 3
        # 23
        str_N = str(N)
        str_a = str_N[0]
        str_b = str_N[1]
        int_sum_a_b = int(str_a)+int(str_b)
        str_sum_a_b = str(int_sum_a_b)
        if(len(str_sum_a_b)==1):
            str_temp = str_b + str_sum_a_b
            temp_result = int(str_temp)
            cycle+=1
            N = temp_result
        else:
            str_temp = str_b + str_sum_a_b[1]
            temp_result = int(str_temp)
            cycle+=1
            N = temp_result
        if(real_N == N):
            break
        
print(cycle)
λ°˜μ‘ν˜•

λŒ“κΈ€