시간 초과
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
}
'Algorithm > programmers' 카테고리의 다른 글
프로그래머스 - 둘만의 암호 feat. 아스키코드 사용 (0) | 2024.09.07 |
---|---|
프로그래머스 - 추억 점수 (0) | 2024.09.06 |
프로그래머스 - 덧칠하기 (0) | 2024.09.06 |
프로그래머스 - 등수 매기기 (0) | 2024.09.05 |
프로그래머스 - 가장 많이 받은 선물 (0) | 2024.09.05 |