๋ฐ์ํ
๐ ๋ฌธ์
https://www.acmicpc.net/problem/15654
๐ ๋์ ํ์ด
N๊ณผ M (1)๋ฒ๋ฌธ์ ์ ์์ ๋๊ฐ์๋ฌธ์ ์ด๋ค. ๊ทธ๋ฅ ์ ๋ ฅ๋ฐ์ ์๋ก ์์ด์ ์ถ๋ ฅํ๋ ๊ฒ์ผ๋ฟ!! ํด๋น ํฌ์คํ ์ ์๋ ๋จ๊ฒจ ๋๊ฒ ๋ค. ์ ๊ธฐ์ ๋ ์์ธํ ํ์ด๊ฐ ๋์์๋ค.
์ด๊ฑฐ ๊ทธ๋ฅ ๋ฌธ์ ๋, ์ฝ๋๋ ์ธ์ฐ๊ฒ๋ค ;; ์ผ๋ฅธ๋๋ด์ผ์ง N๊ณผ M์๋ฆฌ์ฆ,,,, ์ด๋ ๊ฒ ๋ฐ๋ณตํ๋ฉด์ ์ฌ๊ท๋ฅผ ํ๋ค๋ณด๋ DFS ์ฌ๊ท๋ก ๋๋ฆฌ๋ ๋ฐฉ์์ ์์ ํ ์ดํดํ ๊ฒ ๊ฐ๋ค! ํ์ดํ
https://didu-story.tistory.com/371
๐ ์ ๋ต์ฝ๋
let nm = readLine()!.split(separator: " ").map{ Int($0)! }
let n = nm[0]
let m = nm[1]
let arr = readLine()!.split(separator: " ").map{ Int($0)! }.sorted(by: <)
var stack = [Int]()
var answer = ""
private func dfs() {
if stack.count == m {
answer += stack.map{ String($0) }.joined(separator: " ")
answer += "\n"
return
}
for i in 0..<n {
if !stack.contains(arr[i]) {
stack.append(arr[i])
dfs()
stack.removeLast()
}
}
}
dfs()
print(answer)
๋ฐ์ํ