-
[Python] 백준 1110 더하기 사이클Python_알고리즘 2021. 6. 26. 22:26
문제 바로가기
문제분석
# 각 자리의 숫자의 십의자리, 일의자리를 따로 떼서 새로운 수를 만들고 그 수를 다시 새로운 수로 반환하여 처음 입력된 숫자와 동일해지기까지의 횟수를 구하는 문제이다.
# 문제의 핵심은 조건이 참인 동안에 무한 루프를 돌리고 if문으로 탈출조건을 만들어 주는 것이다.
문제풀이
# 숫자로 계산 n = int(input()) #들어온 수를 모두 숫자로 변환 num = n #나중에 계산한 값을 다시 새로운 수로 받아야 하니까 변수로 저장 count = 0 #사이클 수 세는 변수 저장 while True: #조건이 참인 동안에 계속 반복 a = num // 10 #들어온 수의 십의자리 b = num % 10 #들어온 수의 일의자리 c = (a + b) % 10 #새로운 수를 만들기 위해 각 자리 더해서 나온 값의 일의자리 num = b * 10 + c #새로운 수는 기존 일의자리를 십의자리로, 각 자리 더해서 나온 값의 일의자리를 더함 count += 1 #이 과정이 반복될때마다 사이클 수 1씩 증가 if (num == n): #그렇게 조합된 새로운 수와 기존의 수가 같아지면 사이클 프린트하고 멈춤. print(count) break
- 들어온 수를 모두 숫자로 변환하고
- 나중에 계산한 값을 다시 새로운 수로 받아야 하니까 변수로 저장한다.
- 사이클 횟수를 세는 변수까지 선언하고 무한루프를 돌린다.
- 들어온 수의 십의자리, 일의자리를 각각 구하고
- 새로운 수를 만들기 위해 각 자리 더해서 나온 값의 일의자리를 구한다.
- 새로운 수는 기존 일의자리를 십의자리로, 각 자리 더해서 나온 값의 일의자리를 더하고
- 이 과정이 반복될때마다 사이클 횟수를 1씩 증가시킨다.
- 그렇게 조합된 새로운 수와 기존의 수가 같아지면 사이클을 프린트 하고 탈출!
'Python_알고리즘' 카테고리의 다른 글
[Python] 백준 4673 셀프 넘버 (0) 2021.06.29 [Python] 백준 4344 평균은 넘겠지 (0) 2021.06.29 [Python] 백준 2884 알람시계 (0) 2021.06.25 [Python] 백준 2588 곱셈 (0) 2021.06.24 [Python] 백준 10869 사칙연산 (0) 2021.06.23