문제 링크 >> https://programmers.co.kr/learn/courses/30/lessons/42584
📋 문제
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
👉 입출력
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
📝 풀이
❌ 첫 번째 풀이
def solution(prices):
answer = []
while prices:
target = prices.pop(0)
count = 0
for i in prices:
count += 1
if i < target:
break
answer.append(count)
return answer
prices에서 하나를 뽑아 target에 저장한 뒤 prices의 요소들과 비교해보며 가격이 떨어졌는지를 확인하는 코드였다.
혹시나 하고 해봤는데 역시나 정확성 테스트는 모두 통과하지만 효율성 테스트에서 모조리 시간초과났다.
✔️ 두 번째 풀이
def solution(prices):
answer = []
prices.reverse()
while prices:
target = prices.pop()
count = 0
for i in reversed(prices):
count += 1
if i < target:
break
answer.append(count)
return answer
.pop(0)에 시간이 많이 걸린다는 글을 보고 .pop(0) 대신 .pop()을 쓰고자 price.reverse()를 해주었다.
그리고 for문에서 비교할 때는 다시 제대로된 prices를 사용하기 위해 reversed(prices)를 해줬다.
아까랑 달라진 건 .pop(0)을 쓰지 않았을 뿐인데 효율성 테스트를 통과하긴 했다.
근데 이렇게 푸는 게 맞는 건진 모르겠다.
억지로 푼 느낌이라 다른 풀이법을 생각해봐야 할 것 같다.
'Algorithm > Python' 카테고리의 다른 글
[백준 1012번] 유기농 배추 (0) | 2022.02.24 |
---|---|
[백준 1260번] DFS와 BFS (0) | 2022.02.24 |
[프로그래머스] 다리를 지나는 트럭 (0) | 2022.02.18 |
[프로그래머스] 기능 개발 (0) | 2022.02.17 |
[프로그래머스] 프린터 (0) | 2022.02.17 |
댓글