Codility Lesson5. Prefix - PassingCars

세나정·2023년 4월 25일
0
post-thumbnail

Tasks

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)

그리고 문제에 나와있는대로 에러처리를 해주면 끝.

profile
기록, 꺼내 쓸 수 있는 즐거움

0개의 댓글