문제풀이/백준

[python/파이썬] 백준 1110 - 더하기 사이클(브1)

bbugi 2023. 1. 9. 21:26

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

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net


단계별로 풀어보기 - 반복문

12번째 문제

 

파이썬 프로그램에서 풀이 시 정답 나옴.

백준에서 제출 시 시간초과 출력...

해결책 찾아야 함 (해결완료)

---

문자열 리스트를 통한 풀이가 시간이 오래 걸리는 듯??

자리수 계산으로 풀이해야할 때는

// , % 등을 사용하는 습관을 만들자!


[백준 제출 풀이]

import sys
input = sys.stdin.readline

n = int(input())
ans = n
count = 0

while True:
    n1 = n // 10
    n2 = n % 10
    n3 = (n1+n2) % 10
    # num = int(str(n2)+str(n3))
    num = n2 * 10 + n3
    n = num
    count += 1
    if num == ans:
        break
    continue
print(count)

[다른 코드 풀이]

# 백준 제출코드 - 두번째 풀이 - 반복되는 코드가 많아서 다시 풀어보기

import sys
input = sys.stdin.readline

n = int(input())
ans = n
num_cnt = 0
while True:
    if num_cnt == 0:
        n1 = n // 10 # 10의자리 수
        n2 = n % 10 # 1의 자리 수
        k = n1 + n2
        k1 = k // 10
        k2 = k % 10
        n = int(str(n2) + str(k2))
        num_cnt += 1
        continue
    elif n != ans:
        n1 = n // 10 # 10의자리 수
        n2 = n % 10 # 1의 자리 수
        n = n1 + n2
        k = n1 + n2
        k1 = k // 10
        k2 = k % 10
        n = int(str(n2) + str(k2))
        num_cnt += 1
        continue
    else:
        print(num_cnt)
        break

 

# 시간초과 코드 - 첫번째 풀이

import sys
input = sys.stdin.readline

def sum_cycle(n):
    cycle_num = 0
    ans = n
    z = 0
    while True:
        if z == 0:
            x = list(map(int, str(n).zfill(2)))
            y = list(map(int, str(sum(x)).zfill(2)))
            z = int(str(x[1]) + str(y[1])) # 새로운 n이 되어야 함
            cycle_num += 1

            continue
        elif z == ans:
            return cycle_num
            break
        else:
            x = list(map(int, str(z).zfill(2)))
            y = list(map(int, str(sum(x)).zfill(2)))
            z = int(str(x[1]) + str(y[1]))
            cycle_num += 1
            continue

n = int(input())
print(sum_cycle(n))