[더하기_사이클] : https://www.acmicpc.net/problem/1110
문제를 잘 파악하고 풀려고 문제의 요구사항을 여러번 보고
어떤 방법이 가장 효율적일지 문제에서 요구하는 사항에 맞게 숫자를 어떻게 나누고 저장할지 고민을 한 것 같다.
enter = int(input())
def plus_cycle(value):
count = 1
left_num = value // 10
right_num = value % 10
plus_right_num = (left_num + right_num) % 10
new_num = (right_num * 10) + plus_right_num
while value != new_num:
left_num = new_num // 10
right_num = new_num % 10
plus_right_num = (left_num + right_num) % 10
new_num = (right_num * 10) + plus_right_num
count += 1
if value == new_num:
return count
result = plus_cycle(enter)
print(result)
우선은 가장 효율적인 방법을 많이 고민했고, 처음엔 map 함수를 써서 숫자를 쪼개 리스트에 넣는 방법을 시도했으나, 주어진 숫자가 10보다 작을 때 숫자를 넣는 과정의 변수를 해결하는데 조금 코드가 복잡해질것 같아서 다른 방법을 택했다.
enter = int(input())
def plus_cycle(value):
count = 1
numbers = list(map(int,str(value)))
number_sum = sum(numbers) % 10
new_num = (numbers[1] * 10) + number_sum
while value != new_num:
numbers = list(map(int, str(new_num)))
number_sum = sum(numbers) % 10
new_num = (numbers[1] * 10) + number_sum
count += 1
return count
result = plus_cycle(enter)
print(result)
많은 고민과 공부를 통해 더 효율적이게 문제를 풀 수 있을것 같고
문제를 잘 읽고 파악하는것이 중요하다고 느꼈다.