https://app.codility.com/programmers/lessons/5-prefix_sums/passing_cars/
맨 처음에 문제를 이해하는데만 10분 정도 넘게 걸린 것 같다.
그래도 매번 일일이 모든 경우를 계산하는 것이 아니라 후반 0의 계산을 계속 중첩으로 더해준다면 된다는 것을 금방 깨닫고 풀어봤다.
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(A) {
let east = 0;
let pass = 0;
for (i=0; i<A.length; i++) {
if (A[i] === 0) {
east+=1
} else {
pass += east
}
}
if (pass > 1000000000) {
return -1
} else {
return pass
}
}
A의 값들을 확인하면서 0이라면 east의 값을 1올려준다.
그 다음 또 0이 나온다면 0의 (east) 값을 2로 올려주어
그 뒤에 0이 지나가는 만큼의 1을 중첩해서 더해주면 되는 것 (2+2)
그리고 문제에 나와있는대로 에러처리를 해주면 끝.