파이썬과 함께하는 자료구조의 이해 연습문제 2장 20번
1. a+b 구하기
2. ab 구하기
3. a-b 구하기
4. a와 b 구하기
import Foundation
class Solution {
func missingTwoNumber(_ nums: [Int]) -> [Int] {
let numsCount = nums.count
let currentSum = (numsCount + 1) * (numsCount + 2) / 2
let numsSum = nums.reduce(0, +)
let ABSum = currentSum - numsSum // a + b
var BMultiple = 1
for i in nums {
if i == 0 { continue }
BMultiple *= i
}
let ABMultiple = (1...nums.count + 1).reduce(1, *) / BMultiple // ab
//(a-b)^2 = (a+b)^2-4ab
let square = abs(ABSum * ABSum - 4 * ABMultiple)
let diff = Int(sqrt(Double(square)))
// a + b = 10
// a - b = 2
// 2a = 12 , a = 6
let a = (ABSum + diff) / 2
let b = ABSum - a
return [b, a]
}
}
Solution().missingTwoNumber([0,1]) // 2, 3
Solution().missingTwoNumber([1,2,3,5,7,8,9,0]) // 4, 6
Find two Missing Numbers in Sequence of Consecutive Numbers | TutorialHorizon
Algorithms – Find two Missing Numbers in a Sequence of Consecutive Numbers
algorithms.tutorialhorizon.com
'알고리즘' 카테고리의 다른 글
[Swift] 백준 - DFS와 BFS (0) | 2022.01.12 |
---|---|
[Swift] LeetCode - Missing Number (0) | 2022.01.11 |
[Swift] 프로그래머스 - 하노이의 탑 (0) | 2022.01.10 |
[Swift] 2차원 배열 90도 회전 코드 (0) | 2021.11.18 |
[Swift] 프로그래머스 – 내적 (0) | 2021.11.04 |
댓글