https://www.acmicpc.net/problem/15663
Solution
리스트에 먼저 permutation 함수를 이용해 전부를 추가해주고 중복된 항목만 걸러주면 된다.
비효율적이지만 쉬운 set() 집합 함수를 이용해서 중복을 걸러주었다.
비효율적이고 중복을 없애주는 마법의 함수 --> A = list(set(A))
Python Code
from itertools import permutations
N, M = map(int, input().split())
N_list = list(map(int, input().split()))
N_list = sorted(N_list) #순서대로 나오게 정렬 먼저
output = []
for numbers in list(permutations(N_list, M)):
output.append(numbers)
output = sorted(list(set(output))) #중복 제거 후 정렬 까지 한번에!
for numbers in output:
for num in numbers:
print(num, end=' ')
print()
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#262 백준 파이썬 [1158] 조세퍼스 문제 (2) | 2019.12.08 |
---|---|
#261 백준 파이썬 [2566] 최댓값 (0) | 2019.12.04 |
#259 백준 파이썬 [15665] N과 M (11) - 중복 순열 (0) | 2019.12.04 |
#258 백준 파이썬 [15666] N과 M (12) - 중복 조합 (0) | 2019.12.04 |
#257 백준 파이썬 [15664] N과 M (10) - 조합 (0) | 2019.12.04 |