1. ๋ฌธ์

2. ์ ์ถ๋ ฅ

3. ์ ์ถ๋ ฅ ์์

4. ๋ฌธ์ ์ค๊ณ
- ์์ด ๊ตฌํ๋ ๋ฌธ์ ์ ๋์ผํ๊ฒ Back-tracking ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์
- ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ์ฃผ์ด์ง k๊ฐ ๋งํผ์ 1์ ๋ค ์๋ชจํด์ผ ํ๊ณ , ๊ฐ ์ด์ง์์ 1์ด k๊ฐ ๋งํผ๋ง ํฌํจ๋์ด ์์ด์ผ ํ๋ฏ๋ก
- k๊ฐ 0์ด๋ ๋๋ง ์ถ๋ ฅ์ ํด์ฃผ์ด์ผํจ
5. ์ ์ฒด ์ฝ๋
//MARK: - tobin
//MARK: - Framework
import Foundation
//MARK: - Variable
var n: Int = 0
var k: Int = 0
//MARK: - Function
func getBinary(_ current: Int, _ result: inout [Int]) -> Void {
if current >= n {
if k == 0 {
var answer: String = ""
for i in 0..<n {
answer += "\(result[i])"
}
print(answer)
}
} else {
if k == 0 {
var answer: String = ""
for i in 0..<n {
answer += "\(result[i])"
}
print(answer)
} else {
for i in stride(from: 1, through: 0, by: -1) {
result[current] = i
k += i == 1 ? -1 : 0
getBinary(current + 1, &result)
k += i == 1 ? 1 : 0
}
}
}
}
func solution() -> Void {
//MARK: - Input
guard let input = readLine()?.components(separatedBy: " ") else { return }
n = input.map { Int($0) }[0] ?? 0
k = input.map { Int($0) }[1] ?? 0
var result: [Int] = Array(repeating: 0, count: n + 10)
//MARK: - Process & Output
getBinary(0, &result)
}
solution()
์ ์ฒด์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
'Swift Data Structure And Algorithm > Back-tracking(Advanced Brute-Force)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| inequal (0) | 2022.03.31 |
|---|---|
| dessert (0) | 2022.03.31 |
| division (0) | 2022.03.31 |
| ์์ด๊ตฌํ๊ธฐ (0) | 2022.03.31 |