문제
prices 리스트에서 가격이 떨어지지 않은 기간을 각 항목마다 구해 return해줘야 한다.
바로 다음에 가격이 떨어지면 1초간 가격이 떨어지지 않은 것이다.
코드
1. 효율성 0점으로 통과되지 못한 코드
def solution(prices):
answer = []
while prices:
current = prices.pop(0)
time = 0
for v in prices:
if current > v:
time+=1
break
else:
time+=1
answer.append(time)
return answer
while과 for이 둘 다 쓰여 시간 초과가 발생한 것으로 예상된다.
for 2번인 코드로 바꿔보자.
2. 통과한 코드
def solution(prices):
answer = [0] * len(prices)
for i in range(len(prices) - 1):
for j in range(i + 1, len(prices)):
answer[i] += 1
if prices[i] > prices[j]:
break
return answer
코드를 짧게 설명해보자면 0이 prices 리스트의 크기만큼 들어있는 answer 배열을 선언한다.
첫번째 for문으로 처음부터 마지막 앞 인덱스까지 반복한다.
두번째 for문은 두번째 인덱스부터 마지막 인덱스까지 반복한다.
i인덱스의 값과 j인덱스의 값을 비교하여 j의 값이 작을 경우 break로 탈출한다.
'Programming > Python' 카테고리의 다른 글
[프로그래머스] 힙(Heap) - 디스크 컨트롤러 (Python3, 파이썬) (0) | 2022.01.30 |
---|---|
[프로그래머스] 힙(Heap) - 더 맵게 (Python3, 파이썬) (0) | 2022.01.30 |
[프로그래머스] 스택/큐 - 다리를 지나는 트럭 (Python3, 파이썬) (0) | 2022.01.29 |
[프로그래머스] 스택/큐 - 프린터 (Python3, 파이썬) (0) | 2022.01.29 |
[프로그래머스] 스택/큐 - 기능개발 (Python3, 파이썬) (0) | 2022.01.29 |