Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

짱이 될거야

백준 1110: 더하기 사이클 Python 본문

알고리즘

백준 1110: 더하기 사이클 Python

jeong57 2022. 11. 7. 16:35

 

 

예제 입력 중 0의 경우 첫 번째 시행하자마자 결과가 자기 자신이 된다.

그렇기 때문에 while문을 실행하기 전 먼저 cycle을 하나 돌려준다.

이 문제의 경우, 각 자리수를 더하는 것 자체는 어렵지 않지만 cycle을 처음 한 번 실행시켜 준다는 것과 cycle을 돌릴 때마다 직전 값을 따로 저장해둘 필요가 있다는 게 어려웠다.

num = int(input())

digit_tot = 0		# 각 자리수 더한 값
first_num = num		# 입력값 옮겨두기
result = 10 * (num % 10)	# result = 기존 값의 십의 자리 수
if num < 10:
    digit_tot = num
else:
    while num:
        digit_tot += num % 10
        num //= 10

result += (digit_tot % 10)	# result += 자리수를 더한 값의 일의 자리 수
cycle = 1	# cycle 한 번 실행

while result != first_num:	# cycle 돌릴 때의 결과와 처음 입력값이 같을 때까지 실행
    spare = result	# 마찬가지로 cycle 돌리기 직전의 값을 옮겨둔다
    digit_tot = 0
    while spare:
        digit_tot += spare % 10
        spare //= 10
    result = (result % 10) * 10 + digit_tot % 10
    cycle += 1
print(cycle)

'알고리즘' 카테고리의 다른 글

백준 3184: 양 Python  (0) 2022.11.09
백준 1697: 숨바꼭질 Python  (0) 2022.11.08
백준 23627: driip Python  (0) 2022.11.07
백준 10989: 수 정렬하기 3 Python (메모리 초과)  (0) 2022.11.04
백준 2468: 안전 영역 Python  (0) 2022.11.03
Comments