04:23
N๊ณผ M (1) ~ (5) ๋ฌธ์ ๋ ์ข
๋ง๋ถ์์ ๋์จ ์ฝ๋๋ฅผ ํ์ฉํด์ ํ์๋ค. (1)์ ํผ ์ฝ๋๋ก (2)๋ฅผ ํ๊ณ , (3)์ ํ๊ณ โฆ ์ด๋ฐ์์ผ๋ก ๋ฒ ์ด์ค ์ฝ๋์์ ์ ๋ถ ์ง์ฐ๊ณ ์ฒ์๋ถํฐ ํ์ง ์๊ณ ์์ฉํด๋๊ฐ๋๋ฐ, (6)์ ์์ ๋ฒ ์ด์ค ์ฝ๋๋ฅผ ์ง์ฐ๊ณ ํ์๋ค.
๋ฌธ์
https://www.acmicpc.net/problem/15655
๋ด๊ฐ ์์ฑํ ์ฝ๋
Swift
let input = readLine()!.split(separator: " ").map { Int(String($0))! } let n = input[0] let m = input[1] let nums = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted() var picked = [String]() /* n: ์ ์ฒด ์์์ ์ toPick: ๋ ๊ณ ๋ฅผ ์ ์๋ ์์์ ์ */ func pick(n: Int, toPick: Int, start: Int) { // ๊ธฐ์ ์ฌ๋ก: ๋ ์ด์ ๊ณ ๋ฅผ ์ ์๋ ์๊ฐ ์์ผ๋ฉด ์ถ๋ ฅํ๊ณ ์ข
๋ฃ if toPick == 0 { print(picked.joined(separator: " ")) return } for i in start..<n { picked.append(String(nums[i])) pick(n: n, toPick: toPick - 1, start: i+1) picked.removeLast() } } pick(n: n, toPick: m, start: 0)
๋๊ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.