방문 처리를 하면서 수열을 구하는 코드.
def recur(cur):
# m개 골랐다면 print
if cur == m:
print(*arr)
return
for i in range(n):
if not visited[i]: # 중복 아니라면
visited[i] = True # 방문 처리
arr[cur] = i+1 # 리스트에 숫자 담기
recur(cur + 1) # 그 다음 숫자 들어가서 가져와
visited[i] = False # 다음에 쓰기 위해 방문 처리 해제
# 1부터 자연수 n까지, 중복없이 m개 고른 수열 구하기
n, m = map(int, input().split())
arr = [0 for _ in range(m)] # 길이가 m인 수열 담을 리스트
visited = [False for _ in range(n)] # 중복 없어야하니, 방문처리할 리스트 만들어준다.
recur(0)
in
사용하여 검토할 숫자가 수열 리스트에 이미 들어가 있는지 확인하며 수열을 구하는 코드.
def recur(cur):
# m개 골랐다면 print
if cur == m:
print(*arr)
return
for i in range(1, n+1):
if i not in arr: # 해당 숫자가 고른 숫자가 아니라면
arr[cur] = i # 리스트에 숫자 넣기
recur(cur + 1) # 들어가서 다음 숫자 넣어
arr[cur] = 0 # 리스트 쓸거니까 0으로 초기화
# 1부터 자연수 n까지, 중복없이 m개 고른 수열 구하기
n, m = map(int, input().split())
arr = [0 for _ in range(m)] # 길이가 m인 수열 담을 리스트
recur(0)
'Algorithm > Baekjoon' 카테고리의 다른 글
[Python] 9095. 1, 2, 3 더하기 (0) | 2021.09.19 |
---|---|
[Python] 2103. 이친수 (0) | 2021.09.19 |
[Python] 11727. 2xn 타일링 2 (0) | 2021.09.19 |
[Python] 9020. 골드바흐의 추측 (0) | 2021.09.14 |
[Python] 21919. 소수 최소 공배수 (0) | 2021.09.14 |