파이썬 백준 15650번
실버3
https://www.acmicpc.net/problem/15650
문제 보기
문제 풀기
15649번 문제에서 중복 수열을 제거하기 위해
원소의 자리가 올라갈때마다 시작 포인트를 지정하여 수열의 아랫자리 중복을 피한다.
이를 위해 fnDFS 시작때 숫자 1을 지정.
함수안 start 변수를 지정해주고
for문 시작을 start 변수로
재귀함수를 호출할때에는 i 값을 +1 증가시킨다.
코드 보기
import sys
inputdata = sys.stdin.readline
N, M = map(int, inputdata().split())
num_sequence = []
def fnDFS(start):
if len(num_sequence) == M:
print(*num_sequence)
for i in range(start, N + 1):
if i not in num_sequence:
num_sequence.append(i)
fnDFS(i + 1)
num_sequence.pop()
fnDFS(1)
# 4 2
# 1 2
# 1 3
# 1 4
# 2 3
# 2 4
# 3 4
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 4949 - 균형잡힌 세상 (0) | 2022.09.21 |
---|---|
[Python] 백준 풀기 15652 - N과 M (4) (2) | 2022.09.21 |
[Python] 백준 풀기 15651 - N과 M (3) (0) | 2022.09.20 |
[Python] 백준 풀기 11866 - 요세푸스 문제 0 (0) | 2022.09.19 |
[Python] 백준 풀기 15649 - N과 M (1) (0) | 2022.09.18 |