Menu
CoddyTech

Stock Span Problem

보통단조 스택python iconjava iconcpp iconc iconjs icon+10

매일 주식의 종가가 주어집니다. prices[i]는 i일의 가격입니다. i일의 범위는 i일을 끝으로 하고 해당 날짜를 포함하여, 가격이 prices[i] 이하인 날이 연속된 일수입니다.

prices와 같은 순서로 매일의 범위를 반환하세요. 각 범위는 최소 1입니다. 하루는 항상 자기 자신을 포함하기 때문입니다.

함수

stockSpan(prices: integer-array) → integer-array
pricesinteger-array
각 날짜별 가격(순서대로)
반환값integer-array
매일의 범위, 같은 순서로

제약 조건

  • 1 ≤ prices.length ≤ 104
  • 1 ≤ prices[i] ≤ 105
  • 같은 가격인 이전 날짜도 기간에 포함되며, 가격이 엄격히 더 높을 때만 기간이 끝납니다.

예제

입력
prices = [31, 27, 14, 21, 30, 18, 40]
출력
[1, 1, 1, 2, 4, 1, 7]
설명
3일째의 21은 14를 넘어 과거로 거슬러 올라가 27에서 멈춥니다: 범위 2. 4일째의 30은 31에서 멈춥니다: 범위 4. 6일째의 40은 이전의 모든 가격을 웃돌며 7일 전체를 포함합니다.
challenge icon

후속 질문

이제 가격이 한 번에 하나씩 들어오므로 가격이 들어올 때마다 각 구간을 보고해야 합니다. 어떤 접근 방식이 여전히 작동하며, 호출 사이에 무엇을 유지하나요?

코드 초기화
def stockSpan(prices):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

prices = [31, 27, 14, 21, 30, 18, 40]

예상 출력

[1, 1, 1, 2, 4, 1, 7]