시간 초과
import Foundation
func solution(_ players:[String], _ callings:[String]) -> [String] {
var playerNumber: [Int:String] = [:]
for (index,name) in players.enumerated() {
playerNumber[index+1] = name
}
for calling in callings {
let tmp = playerNumber.filter({ $0.value == calling }).first
let higherPlayer = playerNumber[tmp!.key-1]
playerNumber[tmp!.key-1] = tmp?.value
playerNumber[tmp!.key] = higherPlayer
}
return playerNumber.sorted(by: { $0.key < $1.key }).map { $0.value }
}
시간초과 해결
import Foundation
func solution(_ players:[String], _ callings:[String]) -> [String] {
var playerNumber: [Int:String] = [:]
var nameToIndex: [String: Int] = [:]
for (index,name) in players.enumerated() {
playerNumber[index+1] = name
nameToIndex[name] = index+1
}
for calling in callings {
let currentIndex = nameToIndex[calling]
let previousIndex = nameToIndex[calling]! - 1
let higherPlayer = playerNumber[previousIndex]
playerNumber[previousIndex] = playerNumber[currentIndex!]
playerNumber[currentIndex!] = higherPlayer
nameToIndex[calling] = previousIndex
nameToIndex[higherPlayer!] = currentIndex
}
var result: [String] = []
for i in 1...playerNumber.count {
result.append(playerNumber[i]!)
}
return result
}