알고리즘/프로그래머스

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

(ㅇㅅㅎ) 2020. 9. 19. 13:47
728x90
반응형

programmers.co.kr/learn/courses/30/lessons/68646?language=python3

 

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

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

programmers.co.kr

이 문제는 [월간 코드 챌린지 시즌1]의 9월 문제였습니다.

테스트 때는 풀지 못했었지만 프로그래머스에서 올려주신 풀이를 보고 문제를 풀었습니다.

프로그래머스에서 올려주신 풀이는 아래의 링크를 클릭하시면 보러 가실 수 있습니다.

prgms.tistory.com/29

 

[월간 코드 챌린지 시즌1] 9월 문제 해설

코딩이 재미있는 사람들을 위한 챌린지! 프로그래머스에서 9월 10일부터 11월 5일까지 월간 코드 챌린지 시즌1이 진행되고 있습니다. 2020년 9월 10일 19시 30분부터 22시 30분까지 진행된 첫 번째 대��

prgms.tistory.com

풀이를 바로 보시려면 아래 더보기를 클릭하시면 됩니다.

더보기

1차 코드

def solution(a):
    answer = 0
    premin, sufmin = float('inf'), float('inf')
    for idx, i in enumerate(a):
        if idx != 0:
            premin = min(a[:idx])
        if idx != len(a)-1:
            sufmin = min(a[idx+1:])
        if premin > i or sufmin > i:
            answer += 1
    return answer

위의 코드에서는 시간 초과 문제가 있었습니다. min() 함수의 시간을 고려하지 못했기 때문입니다.

 

2차 코드

 

def solution(a):
    tmp = [False]*len(a)
    premin, sufmin = float('inf'), float('inf')
    for i in range(len(a)):
        if premin > a[i]:
            tmp[i] = True
        if premin > a[i]:
            premin = a[i]
    for i in range(len(a)-1-1-1):
        if sufmin > a[i]:
            tmp[i] = True
        if sufmin > a[i]:
            sufmin = a[i]
    return tmp.count(True)

1차 코드에 있었던 문제를 위와 같이 수정했습니다.

이 코드는 float('inf')를 a의 수의 최댓값으로 변경해 준다면 다른 언어에서도 쓰일 수 있다고 생각합니다.

 

이 보다 더 좋은 코드가 있다면 댓글로 알려주시면 감사하겠습니다.

반응형