๐ ๋ฌธ์
https://www.acmicpc.net/problem/15656
๐ ์ฒซ๋ฒ์งธ ํ์ด - ์๊ฐ์ด๊ณผ (ใ ใทใ ใท)
ํด๋น ๋ฌธ์ ๋ ๋ง์ฐฌ๊ฐ์ง๋ก, ์์์ ํ์๋ ๊ฒ๋ค๊ณผ ๋์ผํ ๋ฌธ์ ์ด๋ค. ๋จ์ง, ์ ๋ ฅ์ ๋ฐ์ ์๋ก ์์ด์ ์ถ๋ ฅํด๋ฌ๋ผ๋,,,, ์ด๊ฒ๊ณผ ๋๊ฐ์ ๋ฌธ์ ๋ N๊ณผ M(3) ์ด๋ค. ์๋ ํ์ด๋ฅผ ์ฌ๋ ค๋จ๋ค. (์ด๋๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ์๋ค? ใ ใ ใ ใ )
https://didu-story.tistory.com/374
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 {
stack.append(arr[i])
dfs()
stack.removeLast()
}
}
dfs()
print(answer)
๋ด๊ฐ ํผ ํ์ด๋ ์ด๊ฒ๊ณผ ๊ฐ๋ค. ์์ print๋ฅผ ์ฌ๋ฌ๋ฒ ํด์ฃผ๋ ๊ฒ์ด ์๊ฐ์ด๊ณผ๊ฐ ๋๋ ๊ฒ์ ์๊ณ ์์๊ธฐ ๋๋ฌธ์, ์ ์ด์ answer์ string ํ์ ์ผ๋ก ๋ง๋ค์ด์ฃผ๊ณ , ๋ง์ง๋ง์ ๋ฑ ํ๋ฒ๋ง ์ถ๋ ฅํด์ฃผ์๋ค. ๊ทผ๋ฐ...
์.. ์.... ๋ฐฑ์ค์์ ์ฃผ์ด์ง ์๊ฐ๋ 1์ด์๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ ์ ๋นํ๋ค๊ณ ์๊ฐ๋๋ค. ๋์ ํ ๋ชจ๋ฅด๊ฒ ์ด์ ์ธํฐ๋ท์ ์ฐพ์๋ดค๋ค.
https://jwonylee.tistory.com/entry/15656
์ด ๋จน๊ตฌ๋ฆ๋์ ์ฝ๋๋ฅผ ๋ดค๋๋ฐ, ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํด์ m์์ -1 ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค. ๋น๊ตํ๋ ๋ฐฉ์๋ง ๋ฌ๋ผ์ก์ง, ๋๋ ์๊ฐ๋ณต์ก๋๊ฐ ๋ค๋ฅผ๊ฑด ์์๋ค. ์ ์ด๊ฑด ํต๊ณผ๋๋๊ฑฐ๊ณ ๋ด๊ฐ ์ง ์ฝ๋๋ ํต๊ณผ๊ฐ ์๋๋ ๊ฒ์ผ๊น..
์ฝ๋๋ฅผ ์กฐ๊ธ ๋ ์์ธํ ๋ฏ์ด๋ณด๋ค๊ฐ, ๋ด ์ฝ๋์ ์๋ 'map' ๊ณ ์ฐจํจ์๊ฐ ๊ฑฐ์ฌ๋ฆฌ๊ธฐ ์์ํ๋ค. ๊ณ ์ฐจํจ์๋ฅผ ์๋ชป์ฐ๋ฉด ์๊ฐ๋ณต์ก๋๊ฐ ๋งค์ฐ๋งค์ฐ ์ปค์ง๊ธฐ ๋๋ฌธ์, ๊ทธ๋ด ๊ฒฝ์ฐ์๋ ๋ด๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์๋ชป์งฐ๋ค๊ณ ๋งํ ์ ์๋ค๊ณ ์ ํ ๊ด๋ จ ์ข ์ฌ์..ํ ๋ถ๊ป์ ๋ง์ํด์ฃผ์ จ๋๊ฒ ๊ธฐ์ต๋ฌ๋ค.
๊ทธ๋ผ ๋จน๊ตฌ๋ฆ๋์ฒ๋ผ, ์ ์ด์ stack array๋ฅผ stringํํ๋ก ๋ง๋ค์ด์ map ๊ณ ์ฐจํจ์๋ฅผ ์์ ์ฃผ์! ๋ผ๋์๊ฐ์ ํ๋ค.. ๊ทธ๋ฌ๋๋ ํต๊ณผ... ํ .. ์ง์ map๋๋ฌธ์ด์๋๊ฐ!?! ์ ๋งคํ๋ค ใ ใ ์ด๊ฒ ๋ง๋..
๐ ๋๋ฒ์งธ ํ์ด - ๋ง์์ต๋๋ค!
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 = [String]()
var answer = ""
private func dfs() {
if stack.count == m {
// โ
์ฌ๊ธฐ์ map์ ์์ ์ฃผ์๋ค.
answer += stack.joined(separator: " ") + "\n"
return
}
for i in 0..<n {
stack.append(String(arr[i]))
dfs()
stack.removeLast()
}
}
dfs()
print(answer)