티스토리 뷰

< 해설 >

해설 스킵

 

< 문제 >

 

< 풀이 >

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(int n, vector<int> cores) {
    int lo = 1, hi = 100000000;
    
    while(lo+1 < hi)
    {
        int mid = (lo+hi)/2;
        int work = 0;
        vector<int> memo;
        for(int i = 0; i < cores.size(); ++i)
        {
            work += mid/cores[i] + 1;
            
            if(mid % cores[i] == 0)
            {
                memo.push_back(i);
                work -= 1;
            }
        }
        
        if(work >= n)
            hi = mid - 1;
        else if(work + memo.size() < n)
            lo = mid + 1;
        else
            return memo[n - work - 1] + 1;
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함