# 풀이
- 중복된 카드를 뽑을 수 있으므로
Set
자료구조를 활용하여 중복검사 - k개 선택하여 순서 배치를 하므로 순열 (nPk)
import Foundation
let n = Int(readLine()!)!
let k = Int(readLine()!)!
var set = Set<Int>()
var input: [Int] = []
for _ in 0..<n {
input.append(Int(readLine()!)!)
}
func permutation<T>(_ elements: [T], _ k: Int) -> [[T]] {
var ret: [[T]] = []
var visited: [Bool] = .init(repeating: false, count: elements.count)
func permut(_ now: [T]) {
if now.count == k {
ret.append(now)
return
}
for i in 0..<elements.count {
if visited[i] { continue }
visited[i] = true
permut(now + [elements[i]])
visited[i] = false
}
}
permut([])
return ret
}
for permut in permutation(input, k) {
var string = ""
permut.forEach { string += String($0) }
set.insert(Int(string)!)
}
print(set.count)