2021. 6. 2. 17:50γπ§π»π» iOS κ°λ°/Swift - Algorithm - Solutions
π΅π» λ¬Έμ ν΄μ
λ―ΌνΈλ λ€λ¨κ³ μ‘°μ§μΌλ‘ μΉ«μμ ν맀νλ μ¬μ μ νκ³ μμ΅λλ€. μ΄ νΌλΌλ―Έλ μμ μ‘°μ§μ ν맀μμ΄ μΉ«μμ ν맀νμμ λ, κ·Έ μμ΅κΈμ 10%λ₯Ό μμ μ μκ°ν΄μ€ ν맀μμκ² λΆλ°°ν©λλ€. λΆλ°°λ°μ ν맀μλ λκ΅°κ°μ μκ°λ₯Ό λ°μμλ€λ©΄ λΆλ°°λ°μ κΈμ‘μ 10%μ μμ μ μμ΅κΈ 10%μ λ§μ°¬κ°μ§λ‘ λΆλ°°ν©λλ€. μ΄λ° μμΌλ‘ λͺ¨λ ν맀μμ μμ΅κΈμ μ μ°νμμ λ, κ·Έ κΈμ‘μ 리ν΄νλ λ¬Έμ μ λλ€.
λ¬Έμ μμ μ 곡νλ μμλ₯Ό λ΄ μλ€!
ν맀μ | ν맀 μλ | μμ΅κΈ |
young | 12 | 1,200μ |
john | 4 | 400μ |
tod | 2 | 200μ |
emily | 5 | 500μ |
mary | 10 | 1,000μ |
λ¬Έμ μμ μ£Όμ΄μ§ μμ΅κΈκ³Ό μκ° κ΅¬μ‘°λ₯Ό λ°νμΌλ‘ μ‘°μ§λλ₯Ό κ·Έλ €λ΄€μ΅λλ€. νλμμΌλ‘ μΉ ν΄μ§ μ¬κ°νλ€μ μΉ«μμ ν맀νμ¬ μμ΅κΈμ΄ λ°μν ν맀μλ€μ νμν κ²μ λλ€. ν맀μμκ² μκ° μμΌμ€ μ¬λμ ν λͺ μ΄λ―λ‘ νΈλ¦¬κ΅¬μ‘°λΌκ³ λ³Ό μ μκ² μ£ ?
λ°λΌμ νλμμΌλ‘ μΉ ν ν맀μλ€λ‘ λΆν° λ°μνλ λΆλ°°κΈμ μΌν°μ λλ¬ν λκΉμ§ κ³μ 10%λ‘ κ³μ°νμ¬ μ λ¬νλ©΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μκ² μ΅λλ€.
π€ νμ΄ κ³Όμ
μ΄μ νΈλ¦¬κ΅¬μ‘°μΈ κ²μ μκ² κ³ λ°λ‘ node classλ₯Ό λ§λ€μ΄μ μ κ·Όν΄λ³΄λ €νμΌλ λμ λ리λ₯Ό μ¬μ©νλ κ²μ΄ λ κ°νΈν κ² κ°μμ ν맀μκ³Ό μΆμ²μΈμ 맀μΉμμΌμ€ connections λμ λ리μ, ν맀μκ³Ό μμ΅κΈμ μ μ₯ν profits λμ λ리, μ΄ λ κ°μ§λ₯Ό λ§λ€μμ΅λλ€.
μ κ° λ¬Έμ λ₯Ό νλ©΄μ κ°μ₯ ν·κ°λ Έλ λΆλΆμ "μμ΅μ΄ λ°μν λ¨ νλμ λ Έλλ‘λΆν° λΆλͺ¨ λ Έλλ₯Ό λ°λΌ κ³μ°ν λΆλ°°κΈλ§μ μ λ¬νλ€"λΌλ λΆλΆμ΄μμ΅λλ€. μλ₯Ό λ€μ΄, μμ νΈλ¦¬ ꡬ쑰λ₯Ό 보면 Maryμ²λΌ μμ λ Έλκ° μ¬λ¬ κ°μΈ κ²½μ° μ λ¬λ°μ λΆλ°°κΈ λν μ¬λ¬ κ°κ° λ©λλ€.
μ΄λ, (λΆλ°°λ°μ κΈμ‘λ€μ ν© + μμ μ μμ΅κΈ)μ 10%λ₯Ό μΌν°μ μ λ¬νλ κ²μ΄ μλ, [young, emily, tod]λ€λ‘λΆν° λΆλ°°λ κΈμ‘λ§λ€ λ°λ‘ 10%μ© μ²λ¦¬νμ¬ μ λ¬ν΄μΌ νλ€λ κ²μ΄ 무μ²μ΄λ ν·κ°λ Έμ΅λλ€.
κ·ΈλΌ μμ λ΄μ©μ λ°νμΌλ‘ νΈλ¦¬ νμμ μμμ μ ν맀 μμ΅μ΄ λ°μν [young, john, tod, emily, mary]κ° λ κ²μ΄κ³ κ°κ°μ νμ μμλ λ€μκ³Ό κ°μ΅λλ€.
- young - edward - mary - center
- john - center
- tod - jaymie - mary - center
- emily - mary - center
- mary - center
λ°λΌμ, μμ΅μ΄ λ°μν λ Έλλ€μμ centerμ λλ¬ν λκΉμ§ λΆλ°°κΈμ μ λ¬ν μ¬κ· ν¨μλ₯Ό κ°κ° νΈμΆνμ¬ λ¬Έμ λ₯Ό ν΄κ²°ν΄λ³΄μμ΅λλ€.
μ΄λ, μ¬κ· ν¨μμμ μ λ¬ν λΆλ°°κΈμ΄ 0μ΄ λλ©΄ μ λ¬νλ μλ―Έκ° λ μ΄μ μμΌλ―λ‘ λ¦¬ν΄ μ²λ¦¬λ₯Ό ν΄μ£Όμ΄ μκ°μ μ’ λ λ¨μΆν μ μμ΅λλ€.
π¦ λ¬Έμ νμ΄ & μ½λ
import Foundation
func solution(_ enroll:[String], _ referral:[String], _ seller:[String], _ amount:[Int]) -> [Int] {
// [ν맀μ : μΆμ²μΈ] , [ν맀μ : μμ΅κΈ]
var connections = Dictionary<String, String>()
var profits = Dictionary<String, Int>()
profits["-"] = 0
// λΆλ°°κΈ κ³μ°, Int μμ±μλ‘ μ μ¬ μ²λ¦¬
func calculate(_ profit: Int) -> Int {
return Int(Double(profit) * 0.1)
}
// λΆλ°°κΈ μ λ¬ ν¨μ
func pass(_ name: String, earn: Int) {
// λΆλ°°κΈμ΄ 0μ μλ ΄νλ©΄ λ μ΄μ μ λ¬νλ μλ―Έκ° μμΌλ―λ‘, return
if earn == 0 {
return
}
// λΆλ°°κΈ μ λ¬
profits[name]! += earn
if name != "-" {
// μμ μ μΆμ²ν μΆμ²μΈμ΄ μ‘΄μ¬νλ©΄ 10%λ₯Ό μ ν κΈμ‘μ κ°μ§κ³ λΆλ°°κΈμ λκΈ΄λ€.
profits[name]! -= calculate(earn)
pass(connections[name]!, earn: calculate(earn))
}
}
// λμ
λ리 μ΄κΈ°ν
for i in 0..<enroll.count {
connections[enroll[i]] = referral[i]
profits[enroll[i]] = 0
}
// μμ΅κΈμ΄ λ°μν λ
Έλλ€λ‘ λΆν° λΆλ°°κΈμ λ¨Όμ κ³μ°νκ³ μμ μ ν맀 μμ΅μ λν΄ μ€λ€.
for i in 0..<seller.count {
pass(connections[seller[i]]!, earn: calculate(amount[i] * 100))
// μ΄λ―Έ λΆλ°°λ₯Ό ν΄μ€ μν©μ΄λ―λ‘ 100 * 0.9 = 90
profits[seller[i]]! += amount[i] * 90
}
// enroll μ
λ ₯ μμλλ‘ μμ΅κΈμ 맀ν
return enroll.map{profits[$0]!}
}
- λ¬Έμ λ§ν¬ : https://programmers.co.kr/learn/courses/30/lessons/77486
'π§π»βπ» iOS κ°λ° > Swift - Algorithm - Solutions' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift - νλ‘κ·Έλλ¨Έμ€] μ¬ μ°κ²°νκΈ° (0) | 2021.06.07 |
---|---|
[Swift - νλ‘κ·Έλλ¨Έμ€] μλ¬Όμ μ μ΄μ (0) | 2021.06.03 |
[Swift - νλ‘κ·Έλλ¨Έμ€] ν©μΉ νμ μκΈ (0) | 2021.06.01 |
[Swift - νλ‘κ·Έλλ¨Έμ€] [μΉ΄μΉ΄μ€ μΈν΄] κ²½μ£Όλ‘ κ±΄μ€ (0) | 2021.05.31 |
[Swift - νλ‘κ·Έλλ¨Έμ€] μ κ· μμ΄λ μΆμ² (0) | 2021.05.31 |