반응형
문제
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.
- N개의 자연수 중에서 M개를 고른 수열
- 같은 수를 여러 번 골라도 된다.
입력
첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7)
둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.
출력
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
수열은 사전 순으로 증가하는 순서로 출력해야 한다.
풀이
n,m = map(int,input().split())
a = list(map(int,input().split()))
a.sort()
ans = []
def backtracking(depth):
if depth == m:
print(" ".join(map(str,ans)))
return
for i in range(n):
ans.append(a[i])
backtracking(depth+1)
ans.pop()
backtracking(0)
입력 받은 숫자가 최대 M번만큼 반복하여 중복되지 않은 수열을 만들어 출력
그러므로 반복문 안에 조건문이 없으면 문제를 해결할 수 있다.
N과 M 시리즈
N과 M (5) - 자신을 제외한 나머지 숫자와 수열을 이루어 출력
N과 M (6) - 선행하는 숫자보다 큰 숫자가 나열되는 수열을 이루어 출력
N과 M (7) - 입력 받은 숫자가 최대 M번만큼 반복하여 수열을 만들어 출력
N과 M (8) - 숫자를 중복 포함하여 수열을 이루어 출력
N과 M (9)
N과 M (10)
N과 M (11)
N과 M (12) - 나열되는 숫자는 중복해서 등장, 선행되는 숫자보다 후행하는 숫자가 같거나 큰 수열을 만들어 출력
반응형
'Develop > 알고리즘' 카테고리의 다른 글
[백준/Python] Silver II #15664 N과 M (10) (0) | 2023.02.03 |
---|---|
[백준/Python] Silver II #15666 N과 M (12) (0) | 2023.02.02 |
[백준/Python] Silver II #15663 N과 M (9) (0) | 2023.02.02 |
[백준/Python] Bronze V #2744 대소문자 바꾸기 (0) | 2023.02.02 |
[백준/Python] Silver III #15655 N과 M (6) (0) | 2023.01.30 |
Comment