본문 바로가기
프로그래머스/Python

[프로그래머스] 주식가격 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 18.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 앞에서부터 주식의 가격을 기준으로 잡고 다음 가격을 하나씩 비교하며 크거나 같으면 다음 가격을 추가하고 만약 작은 값이 나오면 바로 종료하여 종료되기 전까지 추가된 가격의 개수를 구하는 방식으로 해결한다.

만약 현재 주식 가격에 대해 다음 가격이 바로 떨어졌다면, 떨어지기 전 1초는 유지한 것으로 본다.

 

  1. 주식 가격 목록에서 하나씩 제거하며 비교하기 위해 popleft() 함수를 사용한다. deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque
  2. 주식 가격 정보를 deque 자료로 변경한다. prices = deque(prices)
  3. 주식 가격 정보의 개수만큼 반복하며 for i in range(len(prices))
  4. 제일 앞 가격을 뽑아낸다. price = prices.popleft()
  5. 해당 주식 가격에 대비하여 상승된 주식의 가격을 저장할 리스트를 생성한다. up = list()
  6. 남은 주식을 하나씩 추출하여 for j in prices
  7. 해당 주식을 일단 추가한다. up.append(j)
  8. 이는 바로 주식의 가격이 떨어졌을 때 떨어지기 바로 직전까지 가격이 유지되었다고 보기 위함이다.
  9. 만약 추가한 주식의 가격이 시작 주식의 가격에 대비해 떨어졌다면 if (prices > j)
  10. 바로 종료한다. break
  11. 주식 가격 상승 및 유지한 초를 계산하여 정답에 추가한다. answer.append(len(up))
반응형

3. 소스코드

from collections import deque

def solution(prices):
    answer = []
    
    prices = deque(prices)
    for i in range(len(prices)):
        price = prices.popleft()
        up = list()
        for j in prices:
            up.append(j)
            if (price > j):
                break  
            
        answer.append(len(up))
                
    return answer
728x90
반응형