티스토리 뷰
[Python] 백준 알고리즘 온라인 저지 1110번 : 더하기 사이클
Python3 코드
input_num = int(input())
num = input_num # num 변수에 input_num을 지정
cnt = 0
while True:
sum_num = (num // 10) + (num % 10) # 각 자릿수를 더한수
new_num = ((num % 10) * 10) + (sum_num % 10) # 새로 만들어지는 수
cnt += 1 # 사이클 카운트
if new_num == input_num :
break
num = new_num # num 변수에 last_num을 지정
print(cnt)
Python3 코드 풀이
1. 작성한 코드에 대한 전체적인 내용 정리
이번 문제는 주어진 공식대로 새로운 수를 생성하고 새로운 수가 생성되면 다시 공식대로 계속 새로운 수를 생성하기를 반복하다가 처음에 입력받은 숫자와 같은 수가 되었을 때, 이 사이클을 반복한 횟수를 출력하는 문제이다.
새로운 수를 생성하는 방법은, 시작하는 숫자를 num 이라 하고 num 수의 각 자리 숫자를 더한 수를 sum_num이라 할 때, num 수의 1의 자리 수를 10의 자리 수로 하고 sum_num의 1의 자리 수를 1 의자 리수로 하는 두 자릿수이다.
이와 같은 사이클은 while문으로 반복하였고 새로 생성된 new_num이 입력 받은 수 input_num과 동일할 때 반복문이 끝나도록 했다.
2. 코드 상단에서 숫자를 입력 받고서 반복문에서 사용할 변수 num을 지정한다.
input_num = int(input())
num = input_num # num 변수에 input_num을 지정
처음에 입력 받는 숫자는 input_num이라는 변수에 선언하였다. 이 변수는 while문에서 새롭게 생성된 new_num과 같은지 비교할 때 사용된다.
while문에서 반복 할 변수로 num이라는 변수에 입력받은 숫자 input_num을 지정하였다. 처음엔 입력받은 수로 선언되지만 이후에 while 문에서 새로 생성된 new_num이 inpu_num과 동일하지 않을 때 다시 new_num을 num 변수에 지정하게 된다.
3. 사이클 카운트 변수를 지정하고 while문 상단에서 sum_num과 new_num을 구한다.
cnt = 0
while True:
sum_num = (num // 10) + (num % 10) # 각 자릿수를 더한수
new_num = ((num % 10) * 10) + (sum_num % 10) # 새로 만들어지는 수
cnt += 1 # 사이클 카운트
cnt 변수는 while문이 반복되는 횟수를 카운트 할 변수가 된다.
while 문 상단에서 sum_num 변수에는 시작하는 숫자인 num의 각 자리 숫자를 더한수이다. num의 10의 자릿수는 num을 10으로 나눈 몫으로 구했고 num의 1의 자릿수는 num을 10으로 나눈 나머지로 구했다.
new_num은 문제의 공식에 따라 새로 생성되는 숫자이다. sum_num이 생성될 때 각 자리 수를 더했던 숫자 num의 1의 자리 수가 10의 자리 수이고 sum_num의 1의 자릿수를 1의 자릿수로 하는 두 자리 숫자이다. num과 sum_num의 1의 자리 숫자는 10을 나눈 나머지 연산을 이용해서 구했고 new_num의 10의 자리 숫자는 num의 1의 자리 숫자에 10을 곱한 수로 구하였다.
4. while 문 하단, while문을 끝낼 조건식을 작성하고 끝나지 않을 경우 num의 값을 변경한다.
if new_num == input_num :
break
num = new_num # num 변수에 last_num을 지정
print(cnt)
새로 생성한 new_num이 처음에 입력 받은 수 input_num과 동일하면 while 반복문을 끝내고 cnt 변수를 출력한다. while문이 끝나지 않으면 num변수에 새로 생성한 수 new_num의 값을 재지정하고 while문을 처음부터 반복한다.
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 5543번 [파이썬] 상근날드 (0) | 2020.07.04 |
---|---|
백준 10951번 [Python] A+B - 4 : try - except 구문 활용 (1) | 2020.07.04 |
백준 2438번 [파이썬] 별 찍기 - 1 : for문, comprehension 작성 (0) | 2020.07.03 |