MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - [3์ฐจ] ์••์ถ• ๋ณธ๋ฌธ

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

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - [3์ฐจ] ์••์ถ•

MUKER 2023. 3. 28. 12:47
 

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

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

programmers.co.kr


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

func solution(_ msg:String) -> [Int] {
    var dicIndex = 1 // ์‚ฌ์ „ ๋ฒˆํ˜ธ
    var dic = [String: Int]()
    (65...90).map { String(UnicodeScalar($0)) }.forEach { // ์‚ฌ์ „ ์ดˆ๊ธฐํ™”
        dic[$0] = dicIndex
        dicIndex += 1 }
    let arr = msg.map { $0 }
    var result = [Int]()
    
    var temp = "" // ๋งˆ์ง€๋ง‰ result๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด temp ์ถ”๊ฐ€
    var count = 0
    while arr.count > count {
        let start = count // ์‹œ์ž‘ index
        while arr.count > count {
            let str = String(arr[start...count].map { $0 })
            if dic[str] != nil {
                temp = str // ๋งˆ์ง€๋ง‰ str ๊ธฐ์–ต
                count += 1
                continue
            }
            else {
                dic[str] = dicIndex
                result.append(dic[temp]!)
                dicIndex += 1
                break
            }
        }
    }
    return result + [dic[temp]!]
}

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

์ ์ ˆํ•˜๊ฒŒ ๋ฐ˜๋ณต๋ฌธ๊ณผ ๋ฐฐ์—ด์„ ๋‹ค๋ค„ ํ’€ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.