짱이 될거야
백준 1110: 더하기 사이클 Python 본문
예제 입력 중 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