알고리즘/백준 문제풀이

[백준] 1110 더하기 사이클 파이썬 풀이

자바칩 프라푸치노 2021. 6. 15. 21:36

 

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

 

1110번: 더하기 사이클

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

www.acmicpc.net


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
= int(input())  #입력받은 값을 int로 바꿈
num = N           #변하는 값
count = 0         #몇 번 사이클인지
 
while True:
    a = num//10
    b = num %10
    c = (a+b)%10
    num = (b*10+ c
    count += 1
    if(num == N):
        break
 
print(count)
cs

말로 풀어서 풀이

먼저 26으로 보자면 다음수를 만드는데 필요한 수는

10의 자리 숫자 2와 1의 자리 숫자 6을 따로 봐야한다

문제는 0~99자리까지 주어진다니까 안심을 하고 두자리로 보면 되겠다.

2를 구하는 것은 26을 10으로 나눈 몫이다 (a)

6은 26을 10으로 나눈 나머지이다 (b)

(만약에 한자리 수라면 몫이 0일 것이다)

그리고 그 둘을 더해서 또 1의 자리 숫자가 필요하다

그러면 그 둘을 더해서 10으로 나눈 나머지가 바로 나온 숫자다(c)

원래 N이랑 계속 변하면서 몇번째에 N이 되는지 비교해야하기에 맨 처음 N과 같은 값을 가진

num을 N으로 선언해주고 num을 while문안에서 계속 반복을 시킨다.

그리고 한번 사이클이 돌때마다 count를 1씩 높여준다

원래 N과 num이 같아지면 break를 하고 count를 출력해준다.

 

정리

1.  N과 num이 같아질때까지 while문을 돌린다.

2.  10의 자리 수를 구하는 것은 10으로 나눈 몫, 1의 자리 수를 구하는 것은 10으로 나눈 나머지

를 활용하여 필요한 숫자를 만든다

3. 사이클이 돌때마다 count를 1씩 높인다.

728x90