MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 15649๋ฒˆ: N๊ณผ M (1) ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/BAEKJOON

[swift] ๋ฐฑ์ค€ - 15649๋ฒˆ: N๊ณผ M (1)

MUKER 2023. 3. 25. 00:11
 

15649๋ฒˆ: N๊ณผ M (1)

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด

www.acmicpc.net


๋‚˜์˜ ํ’€์ด

let NM = readLine()!.split(separator: " ").map { Int($0)! }
let N = NM[0], M = NM[1]
var used = Array(repeating: false, count: N+1)
var result = ""

func backtrack(s: String, count: Int) {
    if count == M {
        result.append(s+"\n")
        return
    }
    for i in 1...N {
        if !used[i] {
            used[i] = true
            backtrack(s: s+"\(i) ", count: count+1)
            used[i] = false
        }
    }
}
backtrack(s: "", count: 0)
print(result)

ํ’€์ด ํ‚ค์›Œ๋“œ

๋ฐฑํŠธ๋ž˜ํ‚น
ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ํ˜„์žฌ ๋ฌธ์ž์—ด๊ณผ ๋ฌธ์ž์—ด์˜ count๋ฅผ ๋„˜๊ฒผ๋‹ค.
ํ•ด๋‹น ๋ฌธ์ œ๋Š” ์ค‘๋ณต์ด ์—†์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉ๋ฌธ ์ฒดํฌ ํ›„ ์›๋ณตํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.