Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- datastore
- 14891_톱니바퀴
- SpringAnimation
- 스택/큐
- velog
- VectorDrawable
- 알고리즘
- viewpager
- 사이드프로젝트
- ARCore
- 안드로이드
- AndroidStudion4.1
- 짤팁
- 애니메이션
- 안드로이드 애니메이션
- motionlayout
- 잡담글
- Delgate Pattern
- 백준
- viewBinding
- DynammincProgramming
- Desigin Pattern
- singleclick
- kotlin
- Python
- 파이썬
- Android
- 캣푸드 기록장
- 사이드 프로젝트
- Android#Kotlin#사진
Archives
- Today
- Total
밍맹의 생각날 때 적는 블로그
[Programmers/Python(파이썬)] Level_2 주식가격 본문
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices | return |
[1,2,3,2,3] | [4,3,1,1,0] |
각 시간대별 주식가격이 떨어지지 않은 기간이 몇 초인지를 구하는 문제다. 간단한 스택/큐 문제로 큐를 이용하면 쉽게 문제를 풀 수 있다.
prices 리스트를 큐로 바꿔 pop해주고, 큐 리스트에 남아있는 요소들과 하나씩 비교 한다.
이 때 가격이 떨어지지 않은 기간을 answer 리스트에 넣어줘야 하기 때문에 몇 초인지를 나타내는 변수에 값을 1씩 늘려준다. 가격이 떨어졌을 경우 반복문을 종료하고 최종적인 기간을 answer 리스트에 추가해주면 끝난다.
아래는 코드 전문이다.
from collections import deque
def solution(prices):
answer = []
que_prices = deque(prices)
while que_prices :
price = que_prices.popleft()
up_time = 0
for n in que_prices :
up_time += 1
if price > n :
break
answer.append(up_time)
return answer
que_prices라는 큐를 만들어주고 popleft()를 이용하여 좌측요소를 빼주고 up_time은 가격이 떨어지지 않은 기간을 나타내는 변수다.
요즘 토익 공부하느라 블로그 포스팅이 뜸한데, 알고리즘 머리를 다시 일깨우기 위해 간단한 문제를 풀어보았다.
'알고리즘(Python)' 카테고리의 다른 글
[백준/Python(파이썬)] 2667_단지번호붙이기 (0) | 2020.04.30 |
---|---|
[백준/Python(파이썬)] 14891_톱니바퀴 (0) | 2020.03.20 |
[백준/Python] 2037_문자메시지 (0) | 2020.03.02 |
[프로그래머스/Python] 기능개발 (Level - 2) (0) | 2020.02.12 |
[프로그래머스/Python] 다리를 지나는 트럭 (0) | 2020.02.10 |
Comments