Notice
Recent Posts
Recent Comments
Link
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

lgvv98

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

์ฝ”๋”ฉํ…Œ์ŠคํŠธ

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

๐Ÿฅ• ์บ๋Ÿฟ๋งจ 2022. 4. 16. 02:10

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV2. ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ

 

โœ… ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV2. ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ

 

2022 KAKAO BLIND RECRUTMENT ๋ฌธ์ œ๋‹ค!

 

์นด์นด์˜ค ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ๋Š” ๊ทธ๋ƒฅ ์ด๋ฆ„๋งŒ์œผ๋กœ๋„ ๋Š˜ ์งœ๋ฆฟํ•ด.

 

โœ… ์ฝ”๋“œ

๋ ˆ๋ฒจ์€ 2์ง€๋งŒ ํ’€์—ˆ์„ ๋•Œ ์ ์ˆ˜๋Š” 1์ ๋งŒ ์ฃผ๋”๋ผ.

๊ทธ๋งŒํผ ์‰ฌ์› ๋‹ค๋Š” ๋ง์ด๊ฒ ์ง€ ใ…œใ…  ๊ทผ๋ฐ ์ง„์งœ ์‰ฝ๊ธด ํ–ˆ๋‹ค...

    import Foundation

    func solution(_ fees:[Int], _ records:[String]) -> [Int] {
        
        
        var dict: [String: String] = [:] // ์ฐจ๋Ÿ‰๋ฒˆํ˜ธ : ์‹œ๊ฐ„
        var totalTimeArray: [String: Int] = [:] // ์ฐจ๋Ÿ‰๋ฒˆํ˜ธ : ๋ˆ„์ ์‹œ๊ฐ„
        var priceDict: [String: Int] = [:] // ์ฐจ๋Ÿ‰๋ฒˆํ˜ธ : ๊ธˆ์•ก
        
        // records ๋‚ด์—์„œ์˜ ์ธ๋ฑ์Šค์™€ ์ฐจ๋ž‘๋ฒˆํ˜ธ๋ฅผ ์ €์žฅ
        records.forEach { record in
            let info = record.components(separatedBy: " ")
            let carNumber = info[1]
            
            if dict[carNumber] == nil { // ์•„์ง INํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด
                dict[carNumber] = info[0]
                 if totalTimeArray[carNumber] == nil {
                    totalTimeArray[carNumber] = 0
                }
            } else { // ์ด๋ฏธ ์ฐจ๊ฐ€ ๋“ค์–ด์™”๋‹ค๋ฉด
                // ๊ณ„์‚ฐํ•˜๋Š” ๋กœ์ง ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
                let inTime = dict[carNumber]! // ์ด์ „์— ๋“ค์–ด์™”๋˜ ์‹œ๊ฐ„
                let time = calueteTime(fees: fees, inTime: inTime, outTime: info[0]) // ์ด๋ฒˆ ๊ตฌ๊ฐ„์—์„œ ์ฃผ์ฐจํ•œ ์‹œ๊ฐ„ ๊ณ„์‚ฐ
                
                dict[carNumber] = nil // ์ถœ์ฐจ ์ฒ˜๋ฆฌ
                
                if totalTimeArray[carNumber] == nil {
                    totalTimeArray[carNumber] = time
                } else {
                    totalTimeArray[carNumber]! += time
                }
            }
        }
        
        dict.forEach { carNumber, value in
            let inTime = dict[carNumber]!
            let time = calueteTime(fees: fees, inTime: inTime, outTime: "23:59")
            
            totalTimeArray[carNumber]! += time
            dict[carNumber] = nil // ๊ตณ์ด ์ด ์ฝ”๋“œ๋Š” ์—†์–ด๋„ ๋œ๋‹ค.
        }
        
        totalTimeArray.forEach { carNumber, time in
            let time = time - fees[0] // ๊ธฐ๋ณธ์‹œ๊ฐ„ ๋นผ์ฃผ๊ธฐ
            var price = fees[1] // ๊ธฐ๋ณธ๊ธˆ์•ก
            
            if time <= 0 {
                // ๊ธฐ๋ณธ ๊ธˆ์•ก๋งŒ ๋‚ด๋ฉด ๋œ๋‹ค.
            } else {
                var count = time / fees[2]
                if time % fees[2] != 0 {
                    count += 1
                }
                
                price += count * fees[3]
            }
            
            priceDict[carNumber] = price
        }
        var answer = priceDict.sorted { $0.key < $1.key }.map { $0.value }
        
        return answer
    }

   func calueteTime(fees: [Int], inTime: String, outTime: String) -> Int{
        let inTimeArray = inTime.components(separatedBy: ":").map { Int($0)! }
        let outTimeArray = outTime.components(separatedBy: ":").map { Int($0)! }
        
        let hour = outTimeArray[0] - inTimeArray[0]
        let minute = outTimeArray[1] - inTimeArray[1]
        
        return hour * 60 + minute
    }

 

Comments