본문 바로가기
Algorithm/Python

[프로그래머스] 주식가격

by _sweep 2022. 2. 18.

문제 링크 >> 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

댓글