MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋ฉ”๋‰ด ๋ฆฌ๋‰ด์–ผ ๋ณธ๋ฌธ

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

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋ฉ”๋‰ด ๋ฆฌ๋‰ด์–ผ

MUKER 2023. 6. 23. 15:57
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


์„ฑ๊ณต ํ’€์ด

import Foundation

func solution(_ orders:[String], _ course:[Int]) -> [String] {
    
    var result = [String]()
    
    // ์กฐํ•ฉ ํ•จ์ˆ˜
    func combi(_ array: [String], _ n: Int) -> [[String]] {
        var result = [[String]]()
        if array.count < n {return result}
        
        func cycle(_ index: Int, _ now: [String]) {
            if now.count == n {
                result.append(now)
                return
            }
            for i in index..<array.count {
                cycle(i + 1, now + [array[i]])
            }
        }
        cycle(0,[])
        return result
    }
    
    // ์กฐํ•ฉ ์ถœ๋ ฅ
    for i in course {
        var sett = Set<String>()
        var arrr = [String]()
        var semiResult = [String]()
        var top = 2
        for j in 0..<orders.count {
            let output = combi(orders[j].map {String($0)}, i).map {$0.sorted().joined()}
            for word in output {
                sett.insert(word)
                arrr.append(word)
            }
        }
        
        for i in sett {
            var count = arrr.filter {$0==i}.count
            if count == top {
                semiResult.append(i)
            } else if count > top {
                semiResult = [i]
                top = count
            }
        }
        semiResult.forEach {result.append($0)}
    }

    return result.sorted()
}

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

- swift๋กœ ์กฐํ•ฉ(Combination)์ฝ”๋“œ๋ฅผ ์งœ์•ผํ–ˆ๋‹ค. swift๋Š” ์กฐํ•ฉ์„ ์ง€์›ํ•˜๋Š” ๋‚ด์žฅ ๊ธฐ๋Šฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ๊ตฌํ˜„ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์•„์ง ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ž์œ ์ž์žฌ๋กœ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•ด ์ฝ”๋“œ๋กœ ๋‚˜์˜ค๊ธฐ ๊นŒ์ง€ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š”๋ฐ.. ๊ทธ ์‹œ๊ฐ„์ด ์–ด๋งˆ์–ด๋งˆํ•ด์„œ ์ฝ”ํ…Œ์—์„œ๋Š” ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์งœ๋Š”๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•  ์ •๋„๋‹ค. ์žฌ๊ท€ํ•จ์ˆ˜ ๋ฌธ์ œ๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค๋Š” ํ•„์š”์„ฑ์„ ๋Š๋‚€๋‹ค.