문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12914?language=python3
참고
https://subinze.tistory.com/159
문제 접근(문제 분석 → 풀이 아이디어)
1차 - Backtracking을 활용한 중복 순열 문제 → 시간 초과
코드를 풀이할 때 적었던 플로우가 있나요?
"""
문제 : N개 칸을 멀리뛰기하는 방법수
출력 : 총 경우의 수 %123456
# 총 경우의 수 = 1,2 중 하나 시바 수중 중복 순열(순서o) 경우의 수 구학
# Backtracking
"""
answer = 0
def solution(n):
def backtracking(path,lv):
# 재귀 종료
global answer
if lv >= len(path):
if sum(path)==n :
answer += 1
# print(f"{lv} : {path} >{answer}")
return 0
#자식 노드 이동
for x in [1,2] :
if sum(path) + x <= n :
path[lv] = x
backtracking(path , lv+1)
# backtracking
path[lv] = 0
for m in range(1,n+1) :
backtracking([0]*m , 0)
return answer%1234567