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

2021. 3. 8. 20:13

문제

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의 μ‚¬μ΄ν΄μ˜ 길이λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯

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

 

좜λ ₯

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

 

μ •λ‹΅

n = int(input())
new_n = -1
cycle = 0

k = n
while n != new_n:
    m = k//10 + k % 10
    new_n = int(str(k%10) + str(m%10))
    cycle += 1
    k = new_n

print(cycle)

βœ” input()을 int()둜 μ •μˆ˜μ²˜λ¦¬ν•  것

βœ” μž…λ ₯받은 n값을 λ³€μˆ˜ k에 μ €μž₯ν•˜μ—¬ μ‚¬μš©ν•  것

βœ” μ†Œμˆ˜μ  μ΄ν•˜ 값은 버리고 λͺ«μ„ κ΅¬ν•˜κ³ μ‹Άμ„ λ•Œ // μ—°μ‚°μžλ₯Ό 이용

βœ” 두 수λ₯Ό 이어뢙일 λ•Œ 문자둜 λ³€ν™˜ ν›„ λ”ν•œ ν›„ μ •μˆ˜μ²˜λ¦¬ν•˜λ©΄ 연산없이 λΉ λ₯΄κ²Œ κ°€λŠ₯

  ex) 26, 38을 μ΄μš©ν•˜μ—¬ 68을 λ§Œλ“€ λ•Œ, 

          μ—°μ‚°μœΌλ‘œ 처리 --> 26%10*10 + 38%10

          λ¬Έμžλ³€ν™˜ 처리 --> int (str(26%10) + str(38%10))

 

728x90

BELATED ARTICLES

more