MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ ๋ณธ๋ฌธ

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

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ

MUKER 2023. 4. 3. 21:16
 

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

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

programmers.co.kr


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

import Foundation

func solution(_ fees:[Int], _ records:[String]) -> [Int] {
    var enterTime = [String: String]() // ์ถœ์ž…์‹œ๊ฐ„
    var totalTime = [String: Int]() // ๋ˆ„์ ์ฃผ์ฐจ์‹œ๊ฐ„
    var result = [Int]() // ์š”๊ธˆ์ •์‚ฐ
    
    for i in records { // ์ฃผ์ฐจ์‹œ๊ฐ„ ๊ณ„์‚ฐ
        let record = i.split(separator: " ").map { String($0) }
        if record[2] == "IN" {
            enterTime[record[1]] = record[0]
            if !totalTime.keys.contains(record[1]) {
                totalTime[record[1]] = 0
            }
        } else {
            let comeIn = enterTime[record[1]]!.split(separator: ":").map { Int($0)! }
            let comeOut = record[0].split(separator: ":").map { Int($0)! }
            let time = (comeOut[0]-comeIn[0])*60 + (comeOut[1]-comeIn[1])
            totalTime[record[1]]! += time
            enterTime[record[1]] = nil
        }
    }
    
    for i in enterTime { // 23:59๋ถ„๊นŒ์ง€ ์•ˆ๋‚˜๊ฐ„ ์ฐจ๋Ÿ‰ ์ฃผ์ฐจ์‹œ๊ฐ„ ๊ณ„์‚ฐ
        let comeIn = i.value.split(separator: ":").map { Int($0)! }
        totalTime[i.key]! += (23-comeIn[0])*60 + (59-comeIn[1])
    }
    
    for i in totalTime.sorted(by: { $0.key < $1.key }) { // ์š”๊ธˆ ๊ณ„์‚ฐ
        if i.value > fees[0] {
            result.append(fees[1] + Int(ceil(Double(i.value-fees[0]) / Double(fees[2]))) * fees[3])
        } else {
            result.append(fees[1])
        }
    }
    return result
}

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