Algorithm
백준: 더하기 싸이클
Hoonco
2023. 1. 15. 20:57
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
해당 문제는 숫자의 십의자리 일의자리를 더해 주면서 기존의 숫자와 동일하게 될때까지 몇번의 전환 작업이 필요하다.
기존엔 str(), split() 함수를 사용해 하였지만 시간초과로 인하여 수행되지 않는다.
이후 변경된 코드이다
풀이
n = int(input())
num = n
cnt = 0
while True:
tens = num // 10
units = num % 10
newUnits = (tens + units) % 10
num = (units * 10) + newUnits
cnt += 1
if num == n:
break
print(cnt)
10의 몫을 tens 에 넣는다 이러면 십의 자리 수를 알 수 있고 ex) 26 // 10 -> 2
10으로 나눈 나머지를 units에 넣음으로써 일의 자리 수를 알 수 있다. ex) 26 % 10 -> 6
이후 tens와 units를 더한 값을 다시 10으로 나눈다 이렇게 되면 ex) 2+ 6 -> 8
새로운 값이 생성된다 이를 계속해서 카운팅하고 num이 n이 되면 반복을 종료시킨다