https://www.acmicpc.net/problem/5568
N개의 카드 중 k개의 카드를 골라 이어붙여서 만들 수 있는 정수의 갯수를 구하는 문제이다
이 경우 카드를 뽑는 순서에 따라서도 충분히 경우가 달라질 수 있다. 그렇다면 조합이 아닌 순열 (permutation)을 활용하여 모든 경우의 수를 살펴보도록 한다.
list(permutations(arr, k))
여기서 sys.stdin.readline()
을 사용하니 개행문자도 같이 추가되는 현상을 겪었다. 그래서 양 옆 문자를 제거해주는 strip()을 사용하였다
import sys
from itertools import permutations
n = int(sys.stdin.readline())
k = int(sys.stdin.readline())
arr = []
for _ in range(n):
arr.append(sys.stdin.readline().strip())
per_arr = list(permutations(arr, k))
result_arr = []
for i in per_arr:
tmp = ''
for j in range(k):
tmp += i[j]
if tmp not in result_arr:
result_arr.append(tmp)
print(len(result_arr))