정글 사람들과 같이 하고있는 알고리즘 스터디에서 내가 낸 문제가
백트래킹을 활용하는 문제였는데, 백트래킹 자체가 어려워서 일단 답을 봤고..
답을 봤는데도 잘 이해가 안가서 N과 M 이라는 백트래킹 기초문제를 먼저 풀었다.
이것도 gpt가 알려준 백트래킹 기본 개념과 블로그를 참고하긴 했다.
import sys
input=sys.stdin.readline
N,M=map(int,input().split())
visited=[False]*(N+1)
def func(num_list):
if len(num_list)==M:
print(*num_list)
return
for i in range(1,N+1):
if not visited[i]:
visited[i]=True
num_list.append(i)
func(num_list)
visited[i]=False
num_list.pop()
func([])
정글에서도 느낀거지만.. 재귀함수, dp, 그리고 어느정도 암기가 필요한 알고리즘 기법들(백트래킹, 냅색, 유니온파인드 등등)이 제일 어려운것같다...
정글에서 어려웠던 문제 유형들 위주로 알고리즘 스터디 외적으로도 차근차근 풀어봐야겠다..!