-
[Python] 15657 N과 M (8)Algorithm/백준 2023. 1. 20. 16:21
1. 문제 📚
https://www.acmicpc.net/problem/15657
15657번: N과 M (8)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
2. 입출력 예 📋
3. 알고리즘 ✅
문제 조건 중 비내림차순이 있었기때문에
고른 수열은 비내림차순이어야 한다.
길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다.
1. 정렬을 해주었고2. dfs 파라미터로 그 이전 값을 받아, 그 이전 값보다 큰 값들만 append 시켜주었다
4. 소스코드 💻
import sys input = sys.stdin.readline N, M = map(int, input().strip().split()) arr = sorted(list(map(int, input().strip().split()))) output = [] def dfs(before, count): if len(output) == M: print(' '.join(output)) return for i in range(N): # 조건3 if arr[before] > arr[i]: continue output.append(str(arr[i])) dfs(i, count + 1) output.pop() dfs(0, 0)
'Algorithm > 백준' 카테고리의 다른 글
[Python] 1439 뒤집기 (0) 2023.01.31 [Python] 11053 가장 긴 증가하는 부분 수열 (0) 2023.01.20 [Python] 1987 알파벳(dfs) (0) 2023.01.19 [Python] 1759 암호 만들기 (0) 2023.01.18 [Python] 3190 뱀 (1) 2023.01.18