Algorithms/Programmers

Popping a balloon

Pinocchio 2021. 8. 29. 14:04

My solution in Python for 'Programmers-popping a ballon' 

Requests for explanation or comments on the code are always welcome.

 

Q. https://programmers.co.kr/learn/courses/30/lessons/68646

 

코딩테스트 연습 - 풍선 터트리기

[-16,27,65,-2,58,-92,-71,-68,-61,-33] 6

programmers.co.kr

 

A. https://github.com/Ihyun/Algorithms/blob/master/Programmers/popping%20a%20balloon.py

 

GitHub - Ihyun/Algorithms

Contribute to Ihyun/Algorithms development by creating an account on GitHub.

github.com

 

 

# Programmers - 풍선 터트리기
# https://programmers.co.kr/learn/courses/30/lessons/68646#
import random


def solution(a):
    answer = 0
    la = len(a)

    if la == 1:
        return 1
    elif la == 2:
        return 2

    min_lefts = [0]*la
    min_rights = [0]*la

    min_left = a[0]
    min_lefts[0] = a[0]
    min_right = a[-1]
    min_rights[-1] = a[-1]

    for i in range(la-1, -1, -1):
        if min_right > a[i]:
            min_right = a[i]
        min_rights[i] = min_right

    for pi in range(1, len(a) - 1):
        pivot = a[pi]

        if min_left > pivot:
            min_left = a[pi]
        min_lefts[pi] = min_left

        if not (pivot > min_lefts[pi-1] and pivot > min_rights[pi+1]):
            answer += 1

    answer += 2
    return answer


'''
정확성  테스트
테스트 1 〉	통과 (0.01ms, 10.4MB)
테스트 2 〉	통과 (0.01ms, 10.3MB)
테스트 3 〉	통과 (0.25ms, 10.1MB)
테스트 4 〉	통과 (33.99ms, 15.2MB)
테스트 5 〉	통과 (122.66ms, 36.7MB)
테스트 6 〉	통과 (181.50ms, 50.3MB)
테스트 7 〉	통과 (244.02ms, 63.9MB)
테스트 8 〉	통과 (251.64ms, 63.9MB)
테스트 9 〉	통과 (243.85ms, 63.9MB)
테스트 10 〉	통과 (272.31ms, 63.8MB)
테스트 11 〉	통과 (253.88ms, 63.7MB)
테스트 12 〉	통과 (259.10ms, 63.7MB)
테스트 13 〉	통과 (253.94ms, 63.9MB)
테스트 14 〉	통과 (271.64ms, 63.8MB)
테스트 15 〉	통과 (279.18ms, 64MB)
'''