๐Ÿ“ ์ฝ”ํ…Œ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค92342 ์–‘๊ถ๋Œ€ํšŒ

JerryiOS 2023. 5. 11. 23:29

import Foundation

func solution(_ n:Int, _ info:[Int]) -> [Int] {
    var max_diff:Int = 0
    var max_lst:[Int] = []    
    var dfs = [(0,0,0,0,Array(repeating: 0, count:11))]
    
    while dfs.count > 0 {
        let now = dfs.removeLast()
        let ascore = now.0
        let lscore = now.1
        let idx = now.2
        let cnt = now.3
        var lst = now.4
        
        if cnt > n {
            continue    
        }
        
        if idx > 10 {
            let diff = lscore - ascore
            if diff > max_diff {
                lst[10] = n - cnt
                max_lst = lst
                max_diff = diff
            }
            continue
        }
        
        if info[10-idx] > 0 {
            dfs.append((ascore+idx, lscore, idx+1, cnt, lst))
        } else {
            dfs.append((ascore, lscore, idx+1, cnt, lst))
        }
        
        if cnt < n {
            lst[10-idx] = info[10-idx] + 1
            dfs.append((ascore, lscore+idx, idx+1, cnt+info[10-idx]+1, lst))
        }
    }    
    
    return max_diff == 0 ? [-1] : max_lst
}

๋„ˆ๋ฌด ์–ด๋ ค์›Œ์„œ ๋ชปํ’€์—ˆ๋‹ค.
continue๋ฅผ ํ™œ์šฉํ•ด ํ•„์š”์—†๋Š” ๋กœ์ง์„ ๋„˜๊ธฐ๋Š” ๋ถ€๋ถ„๊ณผ dfs์•„์ด๋””์–ด ๋„ˆ๋ฌด ์ข‹์•„์„œ ๊ฐ€์ ธ์™”๋‹ค.

๋ฐ˜์‘ํ˜•