Swift Data Structure And Algorithm/Back-tracking(Advanced Brute-Force)

tobin

youngjaeLee1026 2022. 3. 31. 12:07

1. ๋ฌธ์ œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-03-31 12 00 06

2. ์ž…์ถœ๋ ฅ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-03-31 12 00 24

3. ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-03-31 12 00 45

4. ๋ฌธ์ œ ์„ค๊ณ„

  1. ์ˆœ์—ด ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์™€ ๋™์ผํ•˜๊ฒŒ Back-tracking ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ
  2. ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ์ฃผ์–ด์ง„ k๊ฐœ ๋งŒํผ์˜ 1์„ ๋‹ค ์†Œ๋ชจํ•ด์•ผ ํ•˜๊ณ , ๊ฐ ์ด์ง„์ˆ˜์— 1์ด k๊ฐœ ๋งŒํผ๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ
  3. 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