[レベル2]株価
2773 ワード
問題の説明
秒単位で記録された株価の配列価格をパラメータとして指定すると、価格が下がらない時間帯に数秒戻るように解く関数が完了する.
せいげんじょうけん
I/O例
pricesreturn[1, 2, 3, 2, 3][4, 3, 1, 1, 0]
コード#コード#
from collections import deque
def solution(prices):
answer = list()
# prices를 deque로 만들어주어서 왼쪽부터 데이터를 뽑아낼 수 있도록 만들어준다
prices = deque(prices)
# 계속해서 popleft를 사용해서 데이터를 추출할 것이기 때문에 만약에 queue가 비었다면 break 할 수 있도록 설정
while prices:
# 현재 값을 popleft로 받아오고 time = 0 으로 설정
current, time = prices.popleft(), 0
# popleft를 한 뒤 남은 가격들과 비교를 해서 만약 현재 가격이 더 작다면 time을 더해주고 만약에 현재 가격이 더 커지는 순간이 온다면 break를 한다.
for num in prices:
time += 1
if current > num:
break
answer.append(time)
return answer
学識
最初に列挙(price)を使用して空のスタックに値を追加し、スタック長-1のインデックス範囲で値比較を行い、価格が下がったインデックスを答えリストに入力します.次にforゲートをもう一度回してindexを計算する方法で行います.最初のfor文では、スタックに1つずつ入れてからスタックを繰り返し文に戻し、精度100%、時間複雑度O(n^2)、効率テストで0点を得た(ほほほ).
では、私が今しなければならないのは価格から、要素を左から出して、価格の要素と比較して、どのように効果的にそれを行うかを考えているとき(多くのコードを参考にして)、dequeの使い方を理解しました.左から、データを抽出できるdequeを用いて要素を抽出し、for文を用いて比較し、現在の値がより大きい場合はbreak方式を用いて時間複雑度O(n)が効果的に問題を解決することができる.
Reference
この問題について([レベル2]株価), 我々は、より多くの情報をここで見つけました https://velog.io/@hope1053/level-2-주식가격テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol