알고리즘

[백준, 파이썬, 5568번] 카드 놓기

hminor 2023. 9. 13. 10:21

 

풀이

 

  • 처음엔 조합을 활용해서 풀면 되나 싶었지만
  • 예제 1번의 출력 값을 확인 후 조합의 값으로는 6이 나오는데 
  • 7이 어떻게 나올 수 있을까 확인하다가
  • 아래로 조금 더 스크롤 해보니 7이 되는 경우를 알려줘서
  • 순열로 푸는 것을 확인할 수 있었다.
  • 그리고 이번 문제는 k 개의 수끼리 순서대로 나열한 값의 중복되지 않는 개수를 출력하는 것이기에
  • 숫자가 아닌 문자로 초기 셋팅을 해줘 더 편하게 해결.

 

from itertools import permutations
n,k = int(input()),int(input())
li = [str(input()) for _ in range(n)]
result = set()
for i in list(permutations(li, k)):
    val = ''
    for j in i: val += j
    result.add(val)
print(len(result))