문제: https://programmers.co.kr/learn/courses/30/lessons/77486
1. 부모 딕셔너리 만들어서 계속 부모를 찾으며 올라갈 수 있게 하였습니다.
2. 벌어들인 돈은 [이름: 금액] 딕셔너리로 관리하였습니다.
3. 금액의 10%가 1원이 안되면 == 9원 이하면 부모에게 줄 돈이 없으므로 break로 나가게 하였습니다.
import Foundation
func solution(_ enroll:[String], _ referral:[String], _ seller:[String], _ amount:[Int]) -> [Int] {
var parents = [String: String]()
var costs = [String: Int]()
parents["-"] = ""
for i in 0..<referral.count {
parents[enroll[i]] = referral[i]
costs[enroll[i]] = 0
}
for i in 0..<seller.count {
var person = seller[i]
var cost = amount[i] * 100
while parents[person] != "" { // 맨위까지 올라갈때까징
costs[person]! += cost - cost / 10
if cost <= 9 {
break
}
cost /= 10
person = parents[person]!
}
}
var result = [Int]()
for i in 0..<enroll.count {
result.append(costs[enroll[i]]!)
}
return result
}
solution(["john", "mary", "edward", "sam", "emily", "jaimie", "tod", "young"], ["-", "-", "mary", "edward", "mary", "mary", "jaimie", "edward"], ["young", "john", "tod", "emily", "mary"], [12, 4, 2, 5, 10]) // [360, 958, 108, 0, 450, 18, 180, 1080]
'알고리즘' 카테고리의 다른 글
[Swift] LeetCode - 937. Reorder Data in Log Files (0) | 2022.02.14 |
---|---|
[Swift] 프로그래머스 - 후보키 (0) | 2022.02.11 |
[Swift] 프로그래머스 - 예상 대진표 (0) | 2022.02.11 |
[Swift] 프로그래머스 - 카카오 튜플 (0) | 2022.02.11 |
[Swift] 프로그래머스 - 카카오 수식 최대화 (0) | 2022.02.11 |
댓글