1. ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ํŠน์ • ์ˆ˜์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int n, num, x;
vector<int> v;

int solution(int x) {
    int low = lower_bound(v.begin(), v.end(), x) - v.begin(); //iter ๋ฐ˜ํ™˜ - ์ฃผ์†Œ = ํ•ด๋‹น idx
    int upper = upper_bound(v.begin(), v.end(), x) - v.begin();
    return upper - low;
}

int main() {
    cin >> n >> x;
    for(int i = 0; i < n; i++){
        cin >> num;
        v.push_back(num);
    }
    sort(v.begin(), v.end());
    int result = solution(x); //2์™€ ๊ฐ™์€ ๊ฒƒ ๋ช‡๊ฐœ์ธ์ง€ ๊ตฌํ•˜๊ธฐ

    if(result == 0){
        cout << -1;
    } else{
        cout << result;
    }

    return 0;
}

 

2. ๊ณ ์ •์  ์ฐพ๊ธฐ

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int n;
vector<int> v;

int binarySearch(int start, int end) {
    if (start > end)
        return -1;
    int mid = (start + end) / 2;
    if (v[mid] == mid)
        return mid;
    else if (v[mid] > mid) {
        return binarySearch(start, mid - 1);
    } else {
        return binarySearch(mid + 1, end);
    }
}

int main() {
    cin >> n;
    v.resize(n);
    for (int &i: v) {
        cin >> i;
    }
    sort(v.begin(), v.end());

    int idx = binarySearch(0, n - 1);
    cout << idx;
    return 0;
}

 

3. ๊ณต์œ ๊ธฐ ์„ค์น˜

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int n, c, num;

int main() {
    cin >> n >> c;
    vector<int> v;

    for (int i = 0; i < n; i++) {
        cin >> num;
        v.push_back(num);
    }
    sort(v.begin(), v.end());

    //start, end : ์ตœ์†Œ, ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ
    //mid : ์™€์ดํŒŒ์ด์™€ ์ง‘ ๊ฐ„ ๊ฐ„๊ฒฉ
    int start = 1;
    int end = v[n - 1] - v[0];
    int result = 0;

    while (start <= end) {
        int mid = (start + end) / 2;

        //๋ชจ๋“  ์ง‘์„ ๋Œ๋ฉด์„œ ์ฒซ๋ฒˆ์งธ ์ง‘๊ณผ์˜ ๊ฑฐ๋ฆฌ์™€ mid ๋น„๊ต
        int pre_house = v[0]; //์„ค์น˜
        int cnt = 1;
        for (int i = 1; i < n; i++) {
            if (v[i] - pre_house >= mid) {
                cnt++;
                pre_house = v[i]; //์„ค์น˜ํ–ˆ์œผ๋‹ˆ ๋ฐ”๊ฟ”์ฃผ๊ธฐ
            }
        }
        // C๊ฐœ ์ด์ƒ์˜ ๊ณต์œ ๊ธฐ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ, ๊ฑฐ๋ฆฌ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ
        if (cnt >= c) {
            result = mid;
            start = mid + 1;
        } else { // C๊ฐœ ์ด์ƒ์˜ ๊ณต์œ ๊ธฐ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๊ธฐ
            end = mid - 1;
        }
    }

    cout << result;
    return 0;
}

+ Recent posts