알고리즘/백준(BOJ)

백준 - 1655 가운데를 말해요

시나모온 2020. 6. 11. 03:07

문제 링크입니다 : https://www.acmicpc.net/problem/1655

 

1655번: 가운데를 말해요

첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1

www.acmicpc.net

 

단계별 풀기에서 유형은 우선순위 큐로 되어 있는데, 우선순위 큐로 어떻게 풀어야 할 지 감지 잘 안 잡혔다. 그래서 우선순위 큐가 시간 복잡도 O(logN)을 잡아먹으니까 이분탐색으로 풀어도 될 것같아 이분탐색으로 풀었다.

 

 

#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>

using namespace std;

int main() {
    int N, input;
    scanf("%d", &N);
    vector<int> v;
    vector<int>::iterator iter;
    int len;

    for(int i = 0; i < N; i++) {
        scanf("%d", &input);
        iter = lower_bound(v.begin(), v.end(), input);
        v.insert(iter, input);
        len = v.size() - 1;
        printf("%d\n", v[len / 2]);
    }

    return 0;
}

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~