백준: 더하기 싸이클

2023. 1. 15. 20:57Algorithm

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이 되면 반복을 종료시킨다 

 

 

'Algorithm' 카테고리의 다른 글

세 수의 합  (0) 2023.01.17
두 수 더하기  (0) 2023.01.17
백준: 소수 찾기  (0) 2023.01.15
백준: 소수 구하기  (1) 2023.01.15
백준: 오븐 시계  (0) 2023.01.15