# 1110 더하기 사이클
def cycle(N) :
A = N // 10
B = N % 10
new_N = ((B % 10) * 10) + ((A + B) % 10)
return new_N
origin = int(input())
num = origin
count = 0
while True:
ret = cycle(num)
count += 1
if ret == origin:
print(count)
break
else:
num = ret
입력값 중 뒤의 숫자, 그리고 입력값의 합의 뒤의 숫자를 활용해 새로운 숫자를 만들어 그 수가 원래 수(origin)과 같아질 때까지의 사이클 수를 구하는 문제.
이건 사실 입력값을 문자열로 받아서 하는 것이 더 간편했을 것 같은데(나중에 문자열로 다시 해보자!), 일단 이번에는 숫자 계산으로 해결했다. 새로운 수를 만드는 식을 cycle() 함수로 따로 만들어서 무한 루프 while 문 안에 넣고, return 값이 origin 숫자와 같아지면 break 하도록 설정했다.
처음에는 count를 global 변수로 cycle 함수 내에 넣어줬는데, 그랬더니 원인을 알 수 없는 버그로 수가 갑자기 늘어나서, global 변수는 함부로 사용하는 것이 아니라는 교훈을.. 얻었다.(ㅋㅋㅋ)
'개발 공부 > 알고리즘 문제풀이' 카테고리의 다른 글
[백준] 2562. 최댓값 (0) | 2022.07.17 |
---|---|
[백준] 10818. 최소, 최대(476ms) (0) | 2022.07.15 |
[백준] 10952 A+B - 5, # 10951 A+B - 4 (0) | 2022.07.15 |
[백준] 10871. X보다 작은 수 (0) | 2022.07.15 |
[백준] 2439. 별 찍기 - 2 (0) | 2022.07.14 |