반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
주어진 수열에서 M개를 뽑는 조합을 구하는 문제입니다. 단, 각 조합은 오름차순으로 출력되어야 합니다.
itertools.combinations(lst, n): lst에서 n개를 뽑는 조합
itertools 라이브러리의 combinations 함수를 이용하면 쉽게 구할 수 있습니다.
3. 코드
from itertools import combinations
N, M = map(int, input().split())
numlist = list(map(int, input().split()))
case = sorted(set(combinations(sorted(numlist), M)))
for i in case:
for j in i:
print(j, end=" ")
print()
N과 M 1~9까지에 비해 10은 조금 복잡합니다. 먼저 (9, 1)이 아니라, (1, 9)로 조합을 구하기 위해서 수열을 오름차순으로 정렬해서 인수로 대입합니다. 그 다음, 중복된 조합을 set으로 제거합니다.
중복된 조합을 제거 후에 다시 오름차순으로 정렬해서 출력합니다. 이건 정렬을 2번이나 해야해서, 효율이 많이 떨어지긴 하네요.
반응형
'Algorithm' 카테고리의 다른 글
[DP/동적계획법] 백준 11053 가장 긴 증가하는 부분 수열 - 파이썬(Python) (0) | 2022.04.12 |
---|---|
[Brute Force] 백준 15665 N과 M (11) - 파이썬(Python) (0) | 2022.04.11 |
[Brute Force] 백준 15663 N과 M (9) - 파이썬(Python) (0) | 2022.04.09 |
[Brute Force] 백준 15656 N과 M (7) - 파이썬(Python) (0) | 2022.04.08 |
[Brute Force] 백준 15655 N과 M (6) - 파이썬(Python) (0) | 2022.04.07 |
댓글