반응형
백준 1110(더하기 사이클)
https://www.acmicpc.net/problem/1110
코드설명
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 |