티스토리 뷰

프로그래밍/문제풀이

[BOJ] 17298 오큰수

Jaerae Kim 2020. 6. 13. 02:17
#include <iostream>
#include <queue>
using namespace std;

int value[1000000];
int nge[1000000];
priority_queue<pair<int, int> > q;

int main(void)
{
    int n;

    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        int vol = q.size();
        int num;

        scanf("%d", &num);
        value[i] = num;
        nge[i] = -1;
        for (int j = 0; j < vol; j++) {
            int idx = q.top().second;
            int siz = -q.top().first;
            if (siz >= num)
                break;
            q.pop();
            nge[idx] = num;
        }
        q.push({ -num, i });
    }
    for (int i = 0; i < n; i++)
        printf("%d ", nge[i]);

    return 0;
}

총 소요시간 : 28분

디버깅 내용 :

  • Queue를 사용해 시간초과남. Priority Queue(Heap)를 사용하도록 변경.
  • 오큰수를 찾을 때 크거나 같은 수를 찾게해 틀렸음(>=). 큰 수를 찾도록 변경(>).

'프로그래밍 > 문제풀이' 카테고리의 다른 글

[BOJ] 10799 쇠막대기  (0) 2020.06.13
[BOJ] 14891 톱니바퀴  (0) 2020.05.20
[BOJ] 1107 리모컨  (0) 2020.05.20
[BOJ] 10971 외판원 순회2  (0) 2020.05.15
[BOJ] 11051 이항 계수 2  (0) 2020.02.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함