본문 바로가기
백준

백준 11003 최솟값 찾기

by 콩순이냉장고 2021. 5. 27.

문제 URL : https://www.acmicpc.net/problem/11003

 

문제 접근법 : PQ를 이용해서 풀었는데여  0번 인덱스부터 시작해서 n-1까지 입력을 받은후

pq에 저장된것중에 최솟값을 뽑아냅니다. 그치만 뽑은것중에 인덱스가 i-l+1보다 더 작으면 걘 범위에 해당된것이 아니니 pop시켜주고 다시 최소값을 뽑아봅니다. i-l+1이상이라면 해당범위가 맞으니 출력만해주면 되는 간단한 문제입니다.

 

소스코드 : 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//By콩순이냉장고
#include <iostream>
#include<queue>
#include<functional>
using namespace std;
typedef pair<intint> p;
int n, l;
vector<int> v;
void input() {
    cin >> n >> l;
    v.resize(n);
    for (int i = 0; i < n; i++)
        cin >> v[i];
}
void solve() {
    priority_queue<p,vector<p>,greater<p>>pq;
    for (int i = 0; i < n; i++) {
        pq.push({v[i],i});
        while (!pq.empty()&&pq.top().second<i-l+1) {//최소값이 범위내에 있는건지 확인
            pq.pop();
        }
        cout << pq.top().first << " ";
    }
}
 
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    input();
    solve();
}
cs

 

모르는점 혹은 궁금한점  논리적인 오류등 어떤 댓글이든  언제나 환영입니다. 

공감도 눌러주실꺼죠???

 

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

백준 2966 찍기  (0) 2021.06.17
백준 2997 네 번째 수  (0) 2021.06.17
백준 20166 문자열 지옥에 빠진 호석  (0) 2021.05.25
백준 2539 모자이크  (0) 2021.05.20
백준 3079 입국심사  (0) 2021.05.20