프로그래머스/코딩테스트 Lv. 2

주식가격 - Python

아몬드바 2023. 10. 21. 16:12
728x90

문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.

제한사항
prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
prices의 길이는 2 이상 100,000 이하입니다.


입출력 예

입출력 예 설명
1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.

문제해결과정

1. 최근푼문제들이 죄다 이해가 가질않았다. 내가 이상한지 찾아보니까 설명이 부족한 탓도 있고 이중적으로 해석하는 지문들도 꽤나 있어서 이해하는데만 수십분이 걸렸다.. (내가 머리가 나쁜줄..)

당연히 이번것도 이해가 제대로 가질않았고 다른사람들 질문을 통해서 힌트를 얻고 문제를 접근했다.

2. 효율성문제에서 자꾸 떨어져서 큐의 길이를 구해 인덱스로 접근하는것도 시간이 굉장히 오래걸린다는 점을 새롭게 알게 되었고 그 부분을 수정하니 통과가 되긴했다. 처음에 고민했던 방법으로 못푼게 정말 찝찝한데.. 잘모를때는 잘짜여진 코드 를 보면서 터득해야하는거 같다.


from collections import deque
def solution(prices):
    answer = []
    queue = deque(prices)

    while queue:
        time = 0        
        p = queue.popleft()

        for i in queue:
            # 가격이 떨어질때
            if p > i:
                time += 1
                break
            time += 1 

        answer.append(time)

    return answer
728x90

'프로그래머스 > 코딩테스트 Lv. 2' 카테고리의 다른 글

더 맵게 - Python  (0) 2023.10.25
프로세스 - Python  (0) 2023.10.25
다리를 지나는 트럭 - Python  (0) 2023.10.21
의상 - Python  (1) 2023.10.21
전화번호 목록(Python) - 해시  (0) 2023.10.19