개발 연습장/백준 문제풀이

[파이썬, Python] 백준 1110: 더하기 사이클

LooanCheong 2022. 11. 19. 05:25
반응형

문제

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

 

1110번: 더하기 사이클

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

www.acmicpc.net

코드

N = int(input())
num = N
cnt = 0
while True:
    a = num //10
    b = num % 10
    c = (a+b)%10
    num = b*10 + c
    cnt += 1
    if(num==N):
        break
print(cnt)

설명

10의 자리 수와 1의 자리 수를 합쳐서 새로운 수를 만들어 원래의 수로 돌아오는 사이클을 만들면 되는 문제이다.

우선 숫자를 N에 입력 받아주고, num 이라는 변수를 하나 더 만들어서 N의 값을 받아준다.
이후 카운팅을 위해 cnt라는 변수도 만들어준다.

while True를 통해 사이클을 반복해준다.
10의 자리 표현을 위해 num을 10으로 나눈 몫을 a로 지정하고,
1의 자리 표현을 위해 num을 10으로 나눈 나머지를 b로 지정했다.

기존 1의 자리인 b에 10을 곱해서 10의 자리로 만들어주고,
새로 만들어지는 숫자의 10의 자리는 버려야 하므로 c라는 변수로 만들어서 이 둘을 더한 값을 num으로 만들어 준다.

cnt를 1 올려주면서 사이클을 한 바퀴 끝내게 된다.


사이클이 반복되고 num이 기존의 N과 같아졌다면 break를 통해서 사이클을 마치게 된다.
이 때의 cnt를 출력해주면 된다.

반응형