파이썬 백준 15650번
실버3
https://www.acmicpc.net/problem/15650
15650번: N과 M (2)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
문제 보기
문제 풀기
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 |