본문 바로가기
개발/알고리즘

[codility] PassingCars

by ny0011 2021. 2. 18.
반응형

app.codility.com/programmers/lessons/5-prefix_sums/passing_cars/

 

PassingCars coding task - Learn to Code - Codility

Count the number of passing cars on the road.

app.codility.com

01011에서 두개를 뽑아서 (0,1)을 만드는데 0은 항상 1보다 작아야 함

01011을 반대로 뒤집으면 11010이고 

0이 나올 때까지 1의 개수를 세어주면 된다

 

왜냐하면 0 앞에 1이 몇개나 있는지 개수를 세는거니까

첫번째 0은 2개, 두번째 0은 3개라서 총 5개가 됨

 

0이 나올때까지 1의 개수를 저장해두는 게 count one 이고

0이 나와서 이전 partial sum값과 count one을 더해주는 게 partial sum이고

partial sum과 이전 전체 합을 더해주는게 total sum으로 하면 끝!

 

첫번째 0이 나왔을 때 

partial sum = 2

total sum = 2

 

두번째 0이 나왔을 때

partial sum = 2+1

total sum = 2+(2+1)

 

def solution(A):
    # write your code in Python 3.6
    p_sum = 0
    t_sum = 0
    count_one = 0
    for i in range(len(A)-1,-1,-1):
        if A[i] == 0:
            p_sum += count_one
            t_sum += p_sum
            count_one = 0
        else:
            count_one +=1
        if t_sum > 1000000000:
            return -1
    return t_sum

'개발 > 알고리즘' 카테고리의 다른 글

[codility] MaxProductOfThree  (0) 2021.02.19
[codility] Distinct  (0) 2021.02.19
[codility] MinAvgTwoSlice  (0) 2021.02.18
[codility] GenomicRangeQuery  (0) 2021.02.18
[codility] PermCheck  (0) 2021.02.17

댓글