BOJ

[백준][python] 1110 더하기 사이클 ✅

winter17 2023. 1. 24. 20:20

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

 

1110번: 더하기 사이클

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

www.acmicpc.net

풀이 과정

1. 입력받은 수의 일의 자릿수와 십의자릿수를 더해서 나온 값의 일의 자릿수와 입력받은 수의 일의 자릿수를 더하면서 원래의 수로 몇 번을 돌아야 하는지 구하는 문제

2. 입력받을때 정수로 입력을 받고

3. 변하는 값을 num이라는 변수로 두고

4. 몇 번 사이클인지 cnt 변수를 두고 시작한다

5. 몇번을 돌아야 하는지 모르니까 while loop

6. 26이라는 정수를 입력받았을 때 둘로 나누는 방법은 10으로 나눠서 몫과 나머지를 구하는 것

7. N과 num이 같은 수가 나올때까지 while문을 돌린다.

8. 사이클이 한번 돌때마다 cnt += 1

N = int(input())
num = N
cnt = 0
while True:  # 26
    a = num // 10  # 몫
    b = num % 10  # 나머지
    c = (a + b) % 10  # 일의 자리
    num = (b * 10) + c
    cnt += 1
    if num == N:
        break
print(cnt)

리뷰

while 문을 사용하는 것까지는 알겠는데 int가 아니라 str로 접근해서 이상하게 흘러갔다..

수학적으로 접근해야 풀 수 있는 문제였다

백준 브론즈2 부터는 자력으로 풀 수 있는 문제가 거의 없는데 큰일 났다...