백준 15649
nPm 순열을 구해주면 된다
import sys
input = sys.stdin.readline
n,m = map(int, input().split())
chk = [False]*(n+1) # 인덱스 0 사용 x
re = []
def recur(num):
if num == m: # 실수했음
print(' '.join(map(str, re)))
return
for i in range(1,n+1): # 1부터 시작이지 n+1까지 범위 늘려야함
if (chk[i] == False):
chk[i] = True
re.append(i)
recur(num+1)
chk[i]=False
re.pop()
recur(0)
백준 156450
위 문제처럼 순열을 구하는건데, 중복된 내용만 제거하면 된다.
import sys
input = sys.stdin.readline
n,m = map(int, input().split())
re = []
def recur(num):
if m == len(re) : # 수열 조건이 만족됐을 때
# 정렬해서 리스트에 추가
#tmp = set(re)
print(' '.join(map(str,re)))
return
for i in range(num,n+1):
if i not in re :
re.append(i)
recur(i+1)
re.pop()
recur(1)
'자기개발👨💻 > 코딩 알고리즘' 카테고리의 다른 글
[Python] 백준 2559 수열 - 그리디 알고리즘 (0) | 2023.10.24 |
---|---|
[Python] 백준 2559 수열 - 투포인터 알고리즘 (0) | 2023.10.24 |
[Python] 백준 2178 미로 탐색-dfs알고리즘-최단경로 (0) | 2023.10.18 |
[C] 백준 10870 피보나치 수 5 (0) | 2022.08.03 |
이진탐색 문제리스트 (0) | 2022.05.27 |
위상정렬 문제 리스트 (0) | 2022.05.22 |