백준_더하기 사이클_1110_파이썬

Today Jeeho Learned·2022년 8월 5일
0

알고리즘

목록 보기
3/38
post-thumbnail

문제 출처

https://www.acmicpc.net/problem/1110

내 답안

num = int(input())
answer = num
count = 0

while True:
    ten = num // 10  
    one = num % 10  
    num = ((ten + one) % 10) + one * 10
    count += 1

    if answer == num:
        break
print(count)

정리

풀이하는데 오래걸렸다. 그래서 전에 작성했던 답안을 참고했다.
입력받는 숫자가 10보다 작은 1의 자리숫자일때에 갇혀서 다른부분을 고려하지 못했다.
결국은 두자리의 숫자라 최대이기때문에 한 로직으로 해결할수있는 부분인데 말이다.

정리하면
1. 입력받은 숫자를 10의 자리로 나눈 몫을 구한다.
2. 입력받은 숫자를 10으로 나눈 나머지 값을 구한다.
3. 이 두 숫자를 더해한 숫자의 일의 자리를 구하고, 2번에서 구한 숫자에 10을 곱해서 더해준다.
4. 위의 과정이 끝난후 횟수를 한번 더해준다.
5. 처음의 입력받은 값과 비교해서 같으면 반복문에서 나온다.

다른 풀이

n = input()
num = n
cnt = 0

while True:
    if len(num) == 1:
        num = "0" + num
    plus = str(int(num[0]) + int(num[1]))
    num = num[-1] + plus[-1]
    cnt += 1

    if num == n:
        print(cnt)
        break;

문제를 풀면서 정수말고 문자열로도 풀수있을 것 같다는 생각을 했었다. 그래도 문자열보다는 정수형으로 푸는 방법이 익숙하기때문에 참았었는데, 역시 이와 관련된 풀이방법이 있었다.

profile
기록해야 (살아)남는다 !

0개의 댓글