https://www.acmicpc.net/problem/1110
1) 입력값: 사이클 계산에 사용할 N값
2) 출력값: 사이클 수 N
3) 제약조건: 0 <= N <= 99
4) 예외케이스: 0 이면 무조건 1
숫자1 = ab => a + b = cd
숫자2 = bd => b + d = ea
숫자3 = da => d + a = fb
숫자4 = ab = 숫자1
=> 사이클 = 3
def calc_addition_cycle(num):
cycle_check = num
cycle_count = 0
temp_num = 0
next_num = 0
isTrue = True
while isTrue:
temp_num = num // 10 + num % 10
next_num = temp_num % 10 + (num % 10) * 10
num = next_num
cycle_count += 1
if next_num == cycle_check:
isTrue = False
return cycle_count
print(calc_addition_cycle(26)) # 4
print(calc_addition_cycle(55)) # 3
print(calc_addition_cycle(1)) # 60
print(calc_addition_cycle(0)) # 1
처음엔 while
문의 조건을 입력값을 따로 저장한 temp_num
이 num
과 같지 않을 경우로 정의할 생각이었는데 그러면 temp_num이 처음 저장했을 때 무조건 num과 같을 수 밖에 없기 때문에 첫 사이클을 무조건 이행해야한다는 비효율적인 요소가 생겼다.
다른 개발자들의 풀이를 보면서 애초에 while
문의 조건을 True
로 걸고 원하는 조건이 나왔을때 break
또는 False
로 바꿔서 나올 수 있는 방법을 배웠다.