백준

백준 11003번: 최솟값 찾기

https://www.acmicpc.net/problem/11003

 

11003번: 최솟값 찾기

N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다.

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys
from collections import deque
input = sys.stdin.readline
 
n, l = map(int, input().split())
= list(map(int, input().split()))
mydeque = deque()
 
for i in range(n):
    while mydeque and mydeque[-1][1> a[i]:
        mydeque.pop()
    mydeque.append((i,a[i]))
    if mydeque[0][0<=i-l:
        mydeque.popleft()
    print(mydeque[0][1], end=' ')
 
cs

 

'백준' 카테고리의 다른 글

백준 17298번: 오큰수  (0) 2023.02.03
백준 1874번: 스택 수열  (0) 2023.02.03
백준 12891: DNA 비밀번호  (0) 2023.01.28
백준 1253: 좋다  (0) 2023.01.27
백준 1940: 주몽  (0) 2023.01.27