https://school.programmers.co.kr/learn/courses/30/lessons/17686
카카오 문제가 유독 길어요
import Foundation
func solution(_ files:[String]) -> [String] {
// head, number, index를 분리해서 저장할 곳
var answer = [(String,Int,Int)]()
var idx = 0
// 인덱스만 저장
var idxArray = [Int]()
// files에서 인덱스 순서로 뽑아서 넣어줄 곳
var sol = [String]()
for file in files {
// 앞에서부터 숫자까지 뽑기
var head = file.prefix { !$0.isNumber }.lowercased()
// 앞에서 숫자까지 드랍 후 다시 숫자까지 뽑기
var number = file.drop { !$0.isNumber }.prefix{ $0.isNumber }
// 5자 이상이면 tail로 가기 때문에 5자리까지만
if number.count > 5 {
number = number.prefix(5)
}
answer.append((head, Int(number)!, idx))
idx += 1
}
// head으로 정렬 후 head가 같으면
// number로 정렬
var ans = answer.sorted(by: {
if $0.0 == $1.0 {
return $0.1 < $1.1
}
return $0.0 < $1.0
})
// 기존 인덱스만 따로 저장
for i in ans {
idxArray.append(i.2)
}
// 순서대로 인덱스를 뽑아 답을 냄
for i in 0..<idxArray.count {
var j = files[idxArray[i]]
sol.append(j)
}
return sol
}