Apple /Algorithm
[Algorithm/Swift] Codility / TapeEquilibrium
moon_0
2022. 12. 23. 08:28
문제
https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/
풀이
equilibrium 이름처럼 균형을 찾는 문제입니다.
P라는 포인트 위치를 기준으로 왼쪽 배열의 함 우측 배열의합을 구한뒤 빼서 가장 작은 수를 구하는 문제입니다.
P 포인트 위치의 요소는 항상 우측에 포함됩니다.
약간 어려움..
Troubleshooting
- 마지막 n-1이 중요
Tip
- 빼기를 해줄때 -가 올 수 있기 때문에 abs()를 써서 해주면 됩니다.
- abs()
Code O(N)
public func solution(_ A : [Int]) -> Int {
var sum_left = 0
var sum_right = A.reduce(0, +)
var result = 0
for (index, element) in A.enumerated() {
sum_left += element
sum_right -= element
let diff = abs(sum_left - sum_right)
if index == 0 {
result = diff
} else if index == A.count - 1 {
break
} else {
result = min(result, diff)
}
}
return result
}