-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPassingCars.swift
More file actions
46 lines (41 loc) · 1 KB
/
Copy pathPassingCars.swift
File metadata and controls
46 lines (41 loc) · 1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Lesson 04 : Prefix Sums
/*
배열 A의 요소들은 도로상의 차들을 의미
0: 동쪽으로 여행하는 차
1: 서쪽으로 여행하는 차
(P, Q) : P는 동쪽으로 여행하는 차, Q는 서쪽으로 여행하는 차
0 <= P < Q < N 조건을 만족해야 한다.
지나가는 차의 pair 의 개수를 return
For example, given:
A[0] = 0
A[1] = 1
A[2] = 0
A[3] = 1
A[4] = 1
then, (0, 1), (0, 3), (0, 4), (2, 3), (2, 4) so return 5
*/
/*
시간 복잡도: O(N)
*/
struct PassingCars {
func solution(_ A: inout [Int]) -> Int {
var zeroCount = 0
var answer = 0
for item in A {
if item == 0 {
zeroCount += 1
} else {
answer += zeroCount * item
if answer > 1000000000 {
answer = -1
break
}
}
}
return answer
}
func run() {
var testA1 = [0, 1, 0, 1, 1]
print(solution(&testA1)) // 5
}
}