[알고리즘 연습]-더하기 사이클(python)

이준명·2021년 4월 16일
0

365-알고리즘

목록 보기
1/12

1. 문제링크

[더하기_사이클] : https://www.acmicpc.net/problem/1110

2. 풀이 전 생각

문제를 잘 파악하고 풀려고 문제의 요구사항을 여러번 보고
어떤 방법이 가장 효율적일지 문제에서 요구하는 사항에 맞게 숫자를 어떻게 나누고 저장할지 고민을 한 것 같다.

3. 풀이

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)

4. 풀이하면서 고민했던 점

우선은 가장 효율적인 방법을 많이 고민했고, 처음엔 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)

5. 문제를 풀고 난 소감

많은 고민과 공부를 통해 더 효율적이게 문제를 풀 수 있을것 같고
문제를 잘 읽고 파악하는것이 중요하다고 느꼈다.

profile
조금씩 나아가기

0개의 댓글