728x90
반응형
programmers.co.kr/learn/courses/30/lessons/68646?language=python3
이 문제는 [월간 코드 챌린지 시즌1]의 9월 문제였습니다.
테스트 때는 풀지 못했었지만 프로그래머스에서 올려주신 풀이를 보고 문제를 풀었습니다.
프로그래머스에서 올려주신 풀이는 아래의 링크를 클릭하시면 보러 가실 수 있습니다.
풀이를 바로 보시려면 아래 더보기를 클릭하시면 됩니다.
더보기
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의 수의 최댓값으로 변경해 준다면 다른 언어에서도 쓰일 수 있다고 생각합니다.
이 보다 더 좋은 코드가 있다면 댓글로 알려주시면 감사하겠습니다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/python]크레인 인형뽑기 게임 (0) | 2020.06.20 |
---|