๋ฌธ์ :
https://programmers.co.kr/learn/courses/30/lessons/92341
๋ถ์ :
string ํ์ฑ์ ์ด์ฉํ ๊ตฌํ ๋ฌธ์ ์๋ค. C++์์๋ ์๊ฐ์ ๊ตฌํ๋๋ฐ * 60์ ํ๋ ๋ฑ ๋๊ฒ ๋ณต์กํ๋๋ฐ swift๋ DateFormatter()๊ฐ ์๋ค ํํ ๊ทธ๋์ ์
์ฐจ, ์ถ์ฐจ ์๊ฐ์ ์ด๋ก ๋ฐ๊พธ์ด ๋ถ๋จ์๋ก ๋์ ํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ out์ ํ ๋๋ง๋ค -1์ ํด์ฃผ์๋๋ฐ -1์ด ์๋์๋ค๋ฉด out์ ํ์ง ์์ ๊ฒ์ผ๋ก outํ์ง ์์ ์ฐจ๋ค์ ๋ํด์ ํ๋ฒ ๋ ๊ฐ์ ๋์ ์ํจ๋ค cal() ํจ์๋ฅผ ํตํด ์ฃผ์ฐจ ์๊ธ์ ๊ณ์ฐํ๊ณ ์ฐจ ๋ฒํธ๊ฐ ์์ ์์ผ๋ก ์ ๋ ฌํ์๋ค.
Swift ์ฝ๋ :
//
// main.swift
// SOMA๐ฉ๐ปโ๐ป
//
// Created by JoSoJeong on 2022/04/19.
//
import Foundation
func timeToSecond(_ s: String) -> Double {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
return Double(dateFormatter.date(from: s)!.timeIntervalSince1970)
}
func cal(_ fees: [Int], _ now: Double) -> Int {
let defaultCost: Int = fees[1]
let defaultTime: Double = Double(fees[0])
if now < defaultTime { return defaultCost }
let div: Double = Double(fees[2])
let mul: Double = Double(fees[3])
return defaultCost + Int(ceil((now - defaultTime) / div) * mul)
}
func solution(_ fees:[Int], _ records:[String]) -> [Int] {
var answer = [(String, Int)]() // number : cost
var stack: [String : Double] = [:] // ์
์ฐจ ์ถ์ฐจ ์๊ฐ ๊ณ์ฐ
var dic: [String: Double] = [:] // car number - ๋์ ์๊ฐ
for i in records {
let line = i.split(separator: " ").map { String($0) }
let secondT: Double = timeToSecond(line[0])
let number = line[1]
if (stack[number] != 0) && (line[2] == "IN") {
// ์ฒ์ ์
์ฐจ
stack[number] = secondT
}else if line[2] == "OUT" {
// ์๊ฐ ๊ณ์ฐ
// stack pop
let last = stack[number]!
stack[number] = -1
// dic์ ๋์
dic[number, default: 0] += (secondT - last) / 60 //์ถ์ฐจ์๊ฐ - ์
์ฐจ์๊ฐ
}
}
for i in stack { //stack์ด ๋น์ง ์์๋ค๋ฉด ์
์ฐจ๋ ํ์ผ๋ ์ถ์ฐจํ์ง ์์ ๊ฒ
if i.value != -1 { // ์์ง ๋น ์ ธ๋๊ฐ์ง x
let lastT = timeToSecond("23:59")
dic[i.key, default: 0] += (lastT - i.value) / 60
}
}
for i in dic {
let cost = cal(fees, i.value)
answer.append((i.key, cost))
}
answer.sort { $0.0 < $1.0 }
return answer.map { $0.1 }
}
๊ฒฐ๊ณผ :
'Algorithm๐ฐ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] Swift ์คํ์ฑํ ๋ฐฉ 2019 kakao (0) | 2022.05.02 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] C++ ๋์คํฌ ์ปจํธ๋กค๋ฌ (0) | 2022.04.22 |
[ํ๋ก๊ทธ๋๋จธ์ค] Swift ์นด์นด์ค 2022 k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ implementation (0) | 2022.04.15 |
[ํ๋ก๊ทธ๋๋จธ์ค] Swift ์์ ์ต๋ํ (0) | 2022.04.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] Swift ํํ 2019 ์นด์นด์ค implementation (0) | 2022.04.14 |
๋๊ธ