라떼는말이야

[프로그래머스 lv2] 주식가격 (파이썬) 본문

알고리즘/코딩 테스트

[프로그래머스 lv2] 주식가격 (파이썬)

MangBaam 2021. 6. 24. 01:28
반응형

문제 설명

초 단위로 기록된 주식가격이 담긴 배열 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초간 가격이 떨어지지 않았습니다.

나의 풀이

def solution(prices):
    answer = []
    for i, v in enumerate(prices):
        p = i + 1
        while p < len(prices):
            if v > prices[p]:
                answer.append(p - i)
                break
            p += 1
        if p == len(prices):
            answer.append(p - i - 1)
    return answer

가격 정보가 담긴 prices 리스트를 순회한다. 이때 enumerate를 사용하면 인덱스와 값을 동시에 알 수 있다.

기준이 되는 날짜 이후의 가격들을 확인하면 되므로 i + 1부터 순회할 것이다.

 

p로 순회를 하며 기준 가격보다 낮은 가격인지 확인 후, 낮은 가격이 발견되면 answer에 삽입하고, break로 반복문을 빠져나온다.

 

끝까지 순회했는데도 더 낮은 가격을 발견하지 못했다면 마지막 날까지 기준 가격 밑으로 떨어지지 않은 것이다.

p - i - 1로 계산할 수 있다. (또는 len(prices) - i - 1)

 

테스트 결과

 

반응형
Comments