Python

[Python] 백준 1110(더하기 사이클)

땅콩새싹 2021. 7. 25. 16:42
반응형

백준 1110(더하기 사이클)

 


 

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
input_num = int(input())
num = input_num
new_num = 100
cnt = 0
 
while new_num!=input_num:
    sum_num = (num//10)+(num%10)
    new_num = (num%10)*10+(sum_num%10)
    num = new_num
    cnt += 1
    
print(cnt)
cs

먼저 수를 하나 입력 받고 그 수를 변수 num으로 지정해 줍니다. 이유는 처음 입력 받은 값을 나중에 비교해 줄 때 써야 하기 때문에 입력 받은 값이 변하면 안되기 때문에 num변수의 수로 숫자를 변환해 줄 것입니다. 지금 숫자를 0~99사이의 수를 다를 것이기 때문에 변수 new_num은 그 이외의 수 아무 숫자나 대입해 초기화 해 주었습니다.

while문에서 new_num의 수와 input_num의 수가 같지 않을 때 무한 반복 합니다. 입력 받은 숫자의 10의 자리와 1의 자리를 서로 더해주어야 하기 때문에 10으로 나누어 준 몫과 10으로 나누어준 나머지를 더해주어 sum_num에 저장했습니다. 그리고 새로운 숫자를 만들어 주는 방법은 기존의 수의 오른쪽 숫자가 10의 자리 더해준 숫자의 오른쪽 숫자가 1의 자리로 만들어 주는 규칙이 있기 때문에 10으로 나누어 준 나머지에 10을 곱해 10의자리를 만들어 주고 10으로 나눈 나머지를 1의 자리로 사용했습니다. 그리고 이 과정을 한번 반복할 때 마다 cnt의 값을 1씩 증가시켜 new_num의 값과 input_num의 값이 같아질 때 까지 이 과정을 몇 번 반복했는지 나타내 주고 마지막에 그 값을 출력해줍니다.

 

실행결과

반응형

'Python' 카테고리의 다른 글

[Python] 백준 8958(OX퀴즈)  (0) 2021.07.29
[Python] 백준 4344(평균은 넘겠지)  (0) 2021.07.29
[Python] 백준 5543(상근날드)  (0) 2021.07.25
[Python] 백준 2884(알람 시계)  (0) 2021.07.22
[Python] 백준 10171(고양이)  (0) 2021.07.22