recursion 개념을 이용한 알고리즘 연습문제 풀이
2019-01-28
.
def solution(n):
result_count = 0
for data in range(10**n):
data = str(data)
if data == data[::-1]:
result_count += 1
return result_count
solution(2)
19
- 문제식별 : 최악의 조건에서 프로세싱 속도가 저하되는 현상
solution : 규칙을 찾아내면 복잡도를 상당히 줄일 수 있다.
- 1자리 수일때 : 0,1,2,3,4,5,6,7,8,9 -> 10개
- 2자리 수일때 : 11,22,33,44,55,66,77,88,99 ->9개
- 3자리 수일때 : 1x1, 2x2, 3x3, … , 9x9 -> 9 X 10개
- 4자리 수일때 : 1xx1, 2xx2, 3xx3, … , 9xx9 -> 9 X 10개
- 5자리 수일때 : 1xyx1, 2xyx2, 3xyx3, … , 9xyx9 -> 9 X 10 X 10개
- 6자리 수일때 : 1xyyx1, 2xyyx2, 3xyyx3, … , 9xyyx9 -> 9 X 10 X 10개
# 재귀를 응용한 문제풀이
def solution(n):
if n == 1:
return 10
return solution(n-1) + 9*(10**((n-1)//2))
solution(1)
10
solution(2)
19
solution(3)
109