https://www.acmicpc.net/problem/15655
15655번: N과 M (6)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
<복습 체크>
22/03.05 | |||||||||
O |
<내 코드>
- 이번문제도 5번처럼 특정 숫자가 주어져있으므로 리스트 nums에 담는다.
- 이번에는 숫자간의 중복 ( 1 1 , 2 2)가 허용되지 않음 -> if num not in stack: 조건 필요
- 또한 순열이 아니라 조합으로 구성 (1 2 <--> 2 1 중 1 2 만 허용)
--> dfs에 start 파라미터 이용하여 중복 방지
n, m = map(int, input().split())
nums = list(map(int, input().split()))
nums.sort()
stack = []
def dfs(start):
if len(stack)==m:
print(*stack)
return
for i in range(start, n):
if nums[i] not in stack:
stack.append(nums[i])
dfs(i)
stack.pop()
'알고리즘 > 백트래킹' 카테고리의 다른 글
[백준-실버3] 15657번 N과 M(8) (파이썬, 백트래킹, DFS) (0) | 2022.02.06 |
---|---|
[백준-실버3] 15656번 N과 M(7) (파이썬, 백트래킹, DFS) (0) | 2022.02.06 |
[백준-실버3] 15654번 N과 M(5) (파이썬, 백트래킹, DFS) (0) | 2022.02.06 |
[백준-실버3] 15652번 N과 M(4) (파이썬, 백트래킹, DFS) (0) | 2022.02.06 |
[백준-실버3] 15651번 N과 M(3) (파이썬, 백트래킹, DFS) (0) | 2022.02.06 |