728x90
n개의 개인정보, m개의 약관이 있어 주어진 날짜 기준으로 개인정보가 약관에 적힌 유효기간을 넘었는지 검사하는 문제입니다.
String을 Int로 바꿔서 주어진 날짜와 유효기간을 비교해서 풀었는데, dateFomatter를 쓰는 훨씬 간편한 방법이 있었네요.
답
func solution(_ today:String, _ terms:[String], _ privacies:[String]) -> [Int] {
var result: [Int] = []
var idx: Int = 1
let todayDate: Int = {
return Int(today.replacingOccurrences(of: ".", with: ""))!
}()
var termsSet: [String: Int] = [:]
terms.map {
let tempTerm = $0.split(separator: " ")
termsSet.updateValue(Int(tempTerm[1])!, forKey: String(tempTerm[0]))
}
privacies.map {
let tempPrivacy = $0.split(separator: " ")
var tempTermDate: [Int] = String(tempPrivacy.first!).split(separator: ".").map {
return Int($0)!
}
let termPeriod: [Int] = {
var tempTermPeriod: [Int] = [0, 0]
let tempPrivacyPeriod = termsSet[String(tempPrivacy.last!)]!
tempTermPeriod[0] = tempPrivacyPeriod / 12
tempTermPeriod[1] = tempPrivacyPeriod.quotientAndRemainder(dividingBy: 12).remainder
return tempTermPeriod
}()
tempTermDate[0] += termPeriod[0]
tempTermDate[1] += termPeriod[1]
if tempTermDate[1] > 12 {
tempTermDate[0] += 1
tempTermDate[1] -= 12
}
var termDate: Int = {
return tempTermDate[0] * 10000 + tempTermDate[1] * 100 + tempTermDate[2]
}()
if todayDate >= termDate {
result.append(idx)
}
idx += 1
}
return result
}
728x90
'Algorithm' 카테고리의 다른 글
SwiftUI: 덧칠하기 (1) | 2023.12.17 |
---|---|
SwiftUI: 추억 점수 (0) | 2023.12.17 |
SwiftUI: 성격 유형 검사하기 (1) | 2023.12.17 |
SwiftUI: 공원 산책 (0) | 2023.08.29 |
SwiftUI: 달리기 경주 (0) | 2023.08.12 |