[Baekjoon] 15649. N과 M(1)[S3]
📚 문제
https://www.acmicpc.net/problem/15649
재귀함수로 푸는 문제이다.
함수를 돌 때마다 순열의 순서대로 확인하고 마지막 길이까지 넣어주면 출력해준다.
for문 안에 재귀함수를 넣는 것이 포인트이다.
반복된 숫자를 제거하기 위해 visited list에 숫자가 사용됐는지 확인한다.
사용되면 True, 아직 사용안했으면 False로 하여 확인 후 순서대로 값을 넣어 출력한다.
📒 코드
n,m = map(int, input().split())
arr = [0 for i in range(m)]
visited = [False for i in range(n)] # 중복된 순열이 나오지 않게 사용된 숫자인지 확인!
def recur(cur): # 순열의 첫자리부터 채워준다.
if cur == m:
print(*arr) # 순열이 완성되면 프린트한다.
return
else:
for i in range(n): # 자리마다 모든 경우의 수를 넣어주기 위해 for문에 재귀함수를 넣는다.
if visited[i] == True:
continue
else:
arr[cur] = i+1
visited[i] = True
recur(cur+1)
visited[i] = False
recur(0)
🔍 결과
Author And Source
이 문제에 관하여([Baekjoon] 15649. N과 M(1)[S3]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yunhlim/Baekjoon-15649.-N과-M1S3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)