본문 바로가기

Python ◡̈/차근차근 Python

[programmers] python stack/queue 스택/큐 주식가격

 

programmers.co.kr/learn/courses/30/lessons/42584?language=python3

 

코딩테스트 연습 - 주식가격

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

programmers.co.kr

 

 

< problem >

 

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

 

< constraint >
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. 
- prices의 길이는 2 이상 100,000 이하입니다.

 


 

< example >

 

  • 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
  • 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
  • 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
  • 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
  • 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.

 


 

< solution ① > deque 활용

 

- import deque

- prices 배열을 deque 통해 새로운 덱 생성해줌

- while deque배열:

    - 가장 왼쪽 값을 하나씩 pop 하여 모든 값과 비교 후 떨어지면 break

    - timeCount 변수 값을 answer 배열에 append

- return answer[]


 

ⓒ ⓞ ⓓ 

 

 


 

ⓣ ⓔ ⓢ

 


 

< solution ② > 배열 이용

 

- 바로 while문 : while prices:

    - price = pop한 값, timeCount = 0

    - for문 통해 나머지 prices 값과 비교하여 떨어지면 break

- return answer

 


 

ⓒ ⓞ ⓓ ⓔ

 


 

ⓣ ⓔ ⓢ 

 


 

ⓕ ⓘ ⓝ ⓐ ⓛ    ⓒ ⓞ ⓓ ⓔ

 


 

ⓒ ⓞ ⓜ ⓜ ⓔ ⓝ ⓣ

 

이번에는 스택보다 덱 먼저 활용해보았는데,

스택 사용한 경우 정확성은 통과했지만,

효율성은 시간 초과로 모두 실패함