Skip to content

Instantly share code, notes, and snippets.

@pennya
Last active April 17, 2019 05:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pennya/33d5489aa61954645a150755c8071af5 to your computer and use it in GitHub Desktop.
Save pennya/33d5489aa61954645a150755c8071af5 to your computer and use it in GitHub Desktop.
[Codility-Prefix Sums(접두사 합계?)] - PassingCars
/*
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