문제
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
풀이
- 브루트 포스, 완전탐색, 재귀
- 기존 숫자의 오른쪽과 합한 숫자의 오른쪽을 더하고, 그 합이 n과 같아질 때까지 재귀함수 반복
코드
n = int(input())
narr = list(map(int, str(n))) # 숫자를 리스트로
cnt = 0
def cycle(narr, n, cnt):
result = list(map(int, str(sum(narr))))
hap = narr[-1] * 10 + result[-1] # 기존숫자의 오른쪽과, 합한 숫자의 오른쪽 더하기
cnt += 1
if hap == n:
print(cnt)
else:
hap = list(map(int, str(hap))) # 숫자를 리스트로
cycle(hap, n, cnt)
cycle(narr, n, cnt)
'코딩테스트 > BOJ' 카테고리의 다른 글
[백준/파이썬] 1145번: 적어도 대부분의 배수 (Python) (0) | 2021.04.16 |
---|---|
[백준/파이썬] 2851번: 슈퍼 마리오 (Python) (0) | 2021.04.15 |
[백준/파이썬] 7568번: 덩치 (Python) (0) | 2021.04.15 |
[백준/파이썬] 1969번: DNA (Python) (0) | 2021.04.14 |