Coding Test Practice/프로그래머스

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

still..epochs 2023. 2. 16. 09:45

문제 설명

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

제한사항
  • prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
  • prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices return
[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]

 

문제풀이

prices를 순차적으로 돌아가며 몇 초 동안 가격이 떨어지지 않는지 계산해야하므로 2중 포문을 돌면서 각각의 가격을 확인해주면 되겠다는 생각으로 접근했다.

 

def solution(prices):
    answer = []
    
    for i in range(len(prices)):
        cnt = 0
        for j in range(i+1, (len(prices))):
            cnt += 1
            if prices[i] > prices[j]:
                break
        answer.append(cnt)
    return answer

 

처음에 리스트로 접근하니 계산이 이상하게 되서, 인덱스로 접근하였다.

 

중요한 부분은 가격이 낮아지던 높아지던 간에 다음 가격까지 무조건 1초씩 세어주어야 하므로 cnt 변수를 사용하여 카운트를 해주고 만약 가격이 낮아졌을 경우, 두 번째 for문을 그대로 종료하고 answer 리스트에 cnt 를 넣어준다. 그리고 cnt는 0으로 초기화 시키고 다시 이 작업을 반복한다.