プログラマスタック/キュー-株価
問題の説明
秒単位で記録された株価の配列価格をパラメータとして指定すると、価格が下がらない時間帯に数秒戻るように解く関数が完了する.
せいげんじょうけん
価格はそれぞれ1以上10000以下の自然数です.
価格の長さは2以上100000以下です.
I/O例
prices
[1, 2, 3, 2, 3]
return
[4, 3, 1, 1, 0]
I/O例説明
1秒の1はずっと値下げしていません.
2秒の2ずっと値下げしていません.
3秒ポイントの3は1秒後に値下げされます.そのため、価格は1秒以内に下がっていない.
4秒時の2は1秒以内に値下げされませんでした.
5秒時の3は0秒以内に値下げされませんでした.
プール(効率テストタイムアウト) def solution(prices):
answer = []
answer.append(0)
check = [0 for _ in range(len(prices))]
for i in range(1, len(prices)):
answer.append(0)
for j in range(len(answer)-1):
if prices[i] >= prices[j] and check[j] == 0:
answer[j] += 1
elif check[j] == 0:
check[j] = 1
answer[j] += 1
return answer
価格はそれぞれ1以上10000以下の自然数です.
価格の長さは2以上100000以下です.
I/O例
prices
[1, 2, 3, 2, 3]
return
[4, 3, 1, 1, 0]
I/O例説明
1秒の1はずっと値下げしていません.
2秒の2ずっと値下げしていません.
3秒ポイントの3は1秒後に値下げされます.そのため、価格は1秒以内に下がっていない.
4秒時の2は1秒以内に値下げされませんでした.
5秒時の3は0秒以内に値下げされませんでした.
プール(効率テストタイムアウト) def solution(prices):
answer = []
answer.append(0)
check = [0 for _ in range(len(prices))]
for i in range(1, len(prices)):
answer.append(0)
for j in range(len(answer)-1):
if prices[i] >= prices[j] and check[j] == 0:
answer[j] += 1
elif check[j] == 0:
check[j] = 1
answer[j] += 1
return answer
def solution(prices):
answer = []
answer.append(0)
check = [0 for _ in range(len(prices))]
for i in range(1, len(prices)):
answer.append(0)
for j in range(len(answer)-1):
if prices[i] >= prices[j] and check[j] == 0:
answer[j] += 1
elif check[j] == 0:
check[j] = 1
answer[j] += 1
return answer
->テストケースはすべて合格しましたが、効率テストタイムアウト
他人を解く def solution(prices):
answer =[0] * len(prices)
for i in range(len(prices)):
for j in range(i+1, len(prices)):
if prices[i] <= prices[j]:
answer[i]+=1
else:
answer[i]+=1
break
return answer
def solution(prices):
answer =[0] * len(prices)
for i in range(len(prices)):
for j in range(i+1, len(prices)):
if prices[i] <= prices[j]:
answer[i]+=1
else:
answer[i]+=1
break
return answer
スタッキング
def solution(prices):
answer = [0]*len(prices)
stack = []
for i, price in enumerate(prices):
#stack이 비었이면 false
# 스택 마지막 값이 현재 가격보다 크면 -> 가격이 떨어졌다는 의미 -> pop
while stack and price < prices[stack[-1]]:
j = stack.pop()
answer[j] = i - j
stack.append(i)
# for문 다 돌고 Stack에 남아있는 값들 pop
while stack:
j = stack.pop()
answer[j] = len(prices) - 1 - j
return answer
回転ドアスタックが
answer [0,0,0,0,0]
[0,1,2]
[0,1] >>pop>> 2 , answer[2] = 3 - 2 => answer[0,0,1,0,0]
Reference
この問題について(プログラマスタック/キュー-株価), 我々は、より多くの情報をここで見つけました https://velog.io/@whanhee97/프로그래머스-스택큐-주식가격テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol