728x90
Dictionary 를 사용했다.
key는 차수 expo
value는 계수 coef
차수 높은걸 기준으로 돌면서 key 같으면 더해서 value를 update 해준다.
나머지 b를 더해준다.
//3x^3 + 2x^2 + 1
//4x + 2
//key: expo, value: coef, expo
var a : [Int:Int] = [3:3, 2:2, 0:1] //3x^3 + 2x^2 + 1
var b : [Int:Int] = [1:4, 0:2] //4x + 2
var ans : [Int:Int] = [:]
//assume a degree is higher
a.forEach { (key,value) in
if b[key] != nil { //a와b 계수가 같은게 있다면
ans.updateValue(b[key]! + value, forKey: key) //두개의 coef 더해서 저장
b.removeValue(forKey: key)//더한 coef는 없애기
}else{
ans.updateValue(value, forKey: key)
}
}
b.forEach { (key,value) in
ans.updateValue(value, forKey: key)
}
let order = ans.sorted(by: > )
//print(order)
func addPoly(_ a : inout [Int:Int] , _ b : inout [Int:Int] ) -> Array<(key: Int, value: Int)>{
//assume a degree is higher
a.forEach { (key,value) in
if b[key] != nil { //a와b 계수가 같은게 있다면
ans.updateValue(b[key]! + value, forKey: key) //두개의 coef 더해서 저장
b.removeValue(forKey: key)//더한 coef는 없애기
}else{
ans.updateValue(value, forKey: key)
}
}
b.forEach { (key,value) in
ans.updateValue(value, forKey: key)
}
let order = ans.sorted(by: > )
return order
}
//key = expo, value =coef
var polyA = [4:4,3:3,2:2,0:1]
var polyB = [2:2,0:1]
print(addPoly(&polyA, &polyB))
출력
[(key: 4, value: 4), (key: 3, value: 3), (key: 2, value: 4), (key: 1, value: 4), (key: 0, value: 2)]
728x90
'Algorithm > Study' 카테고리의 다른 글
이진트리 순회 (0) | 2021.01.16 |
---|---|
Swift Sorting Algorithm Note (0) | 2021.01.13 |
6 Recursive Pattern (0) | 2020.09.11 |
Swift - Graph Implemetation (0) | 2020.07.20 |
Java 중복유무 순열 조합 (0) | 2020.07.11 |
댓글