Last active
April 17, 2019 05:11
-
-
Save pennya/33d5489aa61954645a150755c8071af5 to your computer and use it in GitHub Desktop.
[Codility-Prefix Sums(접두사 합계?)] - PassingCars
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
A non-empty array A consisting of N integers is given. The consecutive elements of array A represent consecutive cars on a road. | |
Array A contains only 0s and/or 1s: | |
0 represents a car traveling east, | |
1 represents a car traveling west. | |
The goal is to count passing cars. We say that a pair of cars (P, Q), where 0 ≤ P < Q < N, is passing when P is traveling to the east and Q is traveling to the west. | |
For example, consider array A such that: | |
A[0] = 0 | |
A[1] = 1 | |
A[2] = 0 | |
A[3] = 1 | |
A[4] = 1 | |
We have five pairs of passing cars: (0, 1), (0, 3), (0, 4), (2, 3), (2, 4). | |
Write a function: | |
class Solution { public int solution(int[] A); } | |
that, given a non-empty array A of N integers, returns the number of pairs of passing cars. | |
The function should return −1 if the number of pairs of passing cars exceeds 1,000,000,000. | |
For example, given: | |
A[0] = 0 | |
A[1] = 1 | |
A[2] = 0 | |
A[3] = 1 | |
A[4] = 1 | |
the function should return 5, as explained above. | |
Write an efficient algorithm for the following assumptions: | |
N is an integer within the range [1..100,000]; | |
each element of array A is an integer that can have one of the following values: 0, 1. | |
*/ | |
// you can also use imports, for example: | |
import java.util.*; | |
// you can write to stdout for debugging purposes, e.g. | |
// System.out.println("this is a debug message"); | |
class Solution { | |
public int solution(int[] A) { | |
// write your code in Java SE 8 | |
int count = 0; | |
int temp = 0; | |
for(int i = A.length-1; i >= 0; i--) { | |
if(A[i] == 1) { | |
temp++; | |
continue; | |
} | |
count += temp; | |
if(Math.abs(count) > 1000000000) return -1; | |
} | |
return count; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment