[Python][프로그래머스][Level3] 풍선 터트리기

[Python][프로그래머스][Level3] 풍선 터트리기

코드

def solution(a):
    if len(a)<=2:
        return len(a)
    
    ck_left=[i for i in a]
    ck_right=[i for i in a]
    for idx in range(1,len(a)):
        if ck_left[idx]>ck_left[idx-1]:
            ck_left[idx]=ck_left[idx-1]
    for idx in range(len(a)-2,-1,-1):
        if ck_right[idx]>ck_right[idx+1]:
            ck_right[idx]=ck_right[idx+1]
            
    answer=2
    for idx in range(1,len(a)-1):
        if a[idx]<=ck_left[idx-1] or a[idx]<=ck_right[idx+1]:
            answer+=1
    
    return answer

각 위치에 대하여 왼쪽에 있는 가장 작은 값을 ck_left에

각 위치에 대하여 오른쪽에 있는 가장 작은 값을 ck_right에 저장했다.

큰 수를 한 번은 터트릴 수 있기 때문에 왼쪽 혹은 오른쪽에 하나라도 큰 값이 존재한다면 조건을 만족하는 풍선이 된다.

Discussion and feedback