반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42584
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
from collections import deque
def solution(prices):
q = deque(prices)
result = []
while q:
c = q.popleft()
i = 1
for p in q:
if p < c:
result.append(i)
break
i+=1
else:
result.append(len(q))
return result
먼저 저는 collections
모듈의 deque
자료구조를 이용하여 prices
를 deque
자료구조의 q
로 바꾸었습니다.
q
가 빌때까지 반복합니다.
먼저 q.popleft()
를 하여 q
의 가장 첫번째 요소인 c
를 추출합니다.
c
는 현재 시점의 가격을 의미합니다.
i = 1
로 시간에 해당하고 점점 증가합니다.
다음은 for
문으로 나머지 q
를 반복하면서
만약 현재시점의 가격(c
) 보다 p
의 값이 작다면 즉 주식가격이 떨어졌다면 시간(i
)를 result
에 저장하고break
를 사용하여 반복문을 빠져나옵니다.
만약 주식 가격이 떨어지지 않았다면 나머지 값들 중 가격이 떨어진 값이 있는지 확인해야 하기 때문에 나머지 요소를 확인합니다
- 이때
i+=1
로 시간을 증가시킵니다.
하지만 break
에서 반복문을 빠져나오지 않고 모든 for
문을 돌았다면 주식 가격이 끝까지 가격이 떨어지지 않았음을 의미합니다.
따라서 len(q)
를 result
에 저장합니다.
모든 시점의 주식 가격을 확인했다면 result
를 반환해줍니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 오픈채팅방 파이썬(Python) (0) | 2023.01.27 |
---|---|
[코딩테스트] 프로그래머스 숫자 카드 나누기 파이썬(Python) (0) | 2023.01.26 |
[코딩테스트] 프로그래머스 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 MySQL (0) | 2023.01.24 |
[코딩테스트] 프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 MySQL (0) | 2023.01.22 |
[코딩테스트] 프로그래머스 자동차 대여 기록에서 장기/단기 대여 구분하기 MySQL (1) | 2023.01.21 |