MUKER_DEV with iOS

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

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

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - [3์ฐจ] ํŒŒ์ผ๋ช… ์ •๋ ฌ

MUKER 2023. 4. 10. 20:31
 

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

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

programmers.co.kr


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

import Foundation

func solution(_ files:[String]) -> [String] {
    
    var dic = [Int: [String]]()
    
    files.enumerated().forEach { index, str in
        let head = str[str.startIndex..<str.rangeOfCharacter(from: .decimalDigits)!.lowerBound].lowercased()
        let number = str.components(separatedBy: CharacterSet.decimalDigits.inverted).filter { !$0.isEmpty }[0]
        dic[index] = [head,number]
    }
    
    let sort = dic.sorted { i, j in
        i.value[0] == j.value[0] ? Int(i.value[1])! == Int(j.value[1])! ? i.key < j.key : Int(i.value[1])! < Int(j.value[1])! : i.value[0] < j.value[0]
    }
    
    return sort.map { files[$0.key] }
}

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

String.rangeOfCharacter(from:options:range:)

์ง€์ •๋œ ๋ฒ”์œ„์— ์žˆ๋Š” ์ง€์ •๋œ ๋ฌธ์ž ์ง‘ํ•ฉ์—์„œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์˜ ๋ฌธ์ž์—ด ๋ฒ”์œ„๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜.

 

String.components(separatedBy: CharacterSet.decimalDigits.inverted)

์ง€์ •๋œ ๋ฌธ์ž ์ง‘ํ•ฉ์—์„œ 10์ง„์ˆ˜ ์•ˆ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋งŒ ๋ฝ‘์•„์„œ ๋ฐ˜ํ™˜.