algorithm

BOJ 1826

rkawk 2022. 10. 7. 23:41
๋”๋ณด๊ธฐ

์—ฐ๋ฃŒ ์ฑ„์šฐ๊ธฐ ์„ฑ๊ณต

 
2 ์ดˆ 128 MB 5856 1716 1320 28.897%

๋ฌธ์ œ

์„ฑ๊ฒฝ์ด๋Š” ํŠธ๋Ÿญ์„ ์ •๊ธ€ ์†์—์„œ ์šด์ „ํ•˜๋‹ค๊ฐ€ ํŠธ๋Ÿญ์˜ ์—ฐ๋ฃŒํƒฑํฌ์— ๊ฐ‘์ž๊ธฐ ๊ตฌ๋ฉ์ด ๋‚˜์„œ 1km๋ฅผ ๊ฐ€๋Š”๋ฐ 1L์˜ ์—ฐ๋ฃŒ๊ฐ€ ์ƒˆ ๋‚˜๊ฐ€๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๊ฒƒ์„ ๊ณ ์น˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋งˆ์„์— ๊ฐ€์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ƒฅ ๊ฐ€๋‹ค๊ฐ€๋Š” ์ค‘๊ฐ„์— ์—ฐ๋ฃŒ๊ฐ€ ๋‹ค ๋น ์งˆ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์ •๊ธ€ ๊ณณ๊ณณ์— ์—ฐ๋ฃŒ๋ฅผ ์ฑ„์šธ ์ˆ˜ ์žˆ๋Š” ์ฃผ์œ ์†Œ๊ฐ€ N๊ฐœ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ •๊ธ€ ์†์—์„œ ์ค‘๊ฐ„์— ์ฐจ๋ฅผ ๋ฉˆ์ถ”๋Š” ํ–‰์œ„๋Š” ๋งค์šฐ ์œ„ํ—˜ํ•œ ํ–‰์œ„์ด๋ฏ€๋กœ ์ฃผ์œ ์†Œ์—์„œ ๋ฉˆ์ถ”๋Š” ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™” ํ•˜๋ ค ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹คํ–‰์ด๋„ ์„ฑ๊ฒฝ์ด์˜ ํŠธ๋Ÿญ์€ ๋งค์šฐ ์ข‹์•„์„œ ์—ฐ๋ฃŒ ํƒฑํฌ์—๋Š” ์—ฐ๋ฃŒ์˜ ์ œํ•œ์ด ์—†์ด ๋งŽ์ด ์ถฉ๋ถ„ํžˆ ๋งŽ์ด ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ์ฃผ์œ ์†Œ์˜ ์œ„์น˜์™€, ๊ฐ ์ฃผ์œ ์†Œ์—์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์—ฐ๋ฃŒ์˜ ์–‘์ด ์ฃผ์–ด์ ธ ์žˆ์„ ๋•Œ, ์ฃผ์œ ์†Œ์—์„œ ๋ฉˆ์ถ”๋Š” ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ •๊ธ€์€ ์ผ์ง์„ ์ด๊ณ , ์„ฑ๊ฒฝ์ด์˜ ํŠธ๋Ÿญ๊ณผ ์ฃผ์œ ์†Œ๋„ ๋ชจ๋‘ ์ผ์ง์„  ์œ„์— ์žˆ๋‹ค. ์ฃผ์œ ์†Œ๋Š” ๋ชจ๋‘ ์„ฑ๊ฒฝ์ด์˜ ํŠธ๋Ÿญ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ฃผ์œ ์†Œ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 10,000)๊ฐ€ ์ฃผ์–ด์ง€๊ณ  ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ N+1๋ฒˆ์งธ ์ค„ ๊นŒ์ง€ ์ฃผ์œ ์†Œ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์œ ์†Œ์˜ ์ •๋ณด๋Š” ๋‘๊ฐœ์˜ ์ •์ˆ˜ a,b๋กœ ์ด๋ฃจ์–ด ์ ธ ์žˆ๋Š”๋ฐ a(1 ≤ a ≤ 1,000,000)๋Š” ์„ฑ๊ฒฝ์ด์˜ ์‹œ์ž‘ ์œ„์น˜์—์„œ ์ฃผ์œ ์†Œ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  b(1 ≤ b ≤ 100)๋Š” ๊ทธ ์ฃผ์œ ์†Œ์—์„œ ์ฑ„์šธ ์ˆ˜ ์žˆ๋Š” ์—ฐ๋ฃŒ์˜ ์–‘์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  N+2๋ฒˆ์งธ ์ค„์—๋Š” ๋‘ ์ •์ˆ˜ L๊ณผ P๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ L(1 ≤ L ≤ 1,000,000)์€ ์„ฑ๊ฒฝ์ด์˜ ์œ„์น˜์—์„œ ๋งˆ์„๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ, P(1 ≤ P ≤ 1,000,000)๋Š” ํŠธ๋Ÿญ์— ์›๋ž˜ ์žˆ๋˜ ์—ฐ๋ฃŒ์˜ ์–‘์„ ์˜๋ฏธํ•œ๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ฃผ์œ ์†Œ์—์„œ ๋ฉˆ์ถ”๋Š” ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋งˆ์„์— ๋„์ฐฉํ•˜์ง€ ๋ชปํ• ๊ฒฝ์šฐ -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

4
4 4
5 2
11 5
15 10
25 10

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

3โ€‹

17๋ฒˆ๋งŒ์— ๋งž์ถ˜ ๋ฌธ์ œ์ด๋‹ค.

 

์—ฐ๋ฃŒํ•˜๋‚˜, ๊ฑฐ๋ฆฌํ•˜๋‚˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด์•ผ๋œ๋‹ค๋Š” ๊ฒƒ์€ 3๋ถ„๋งŒ์— ์•Œ์•„๋ƒˆ๋Š”๋ฐ ๊ฒฐ๊ตญ ์ดํ‹€๋™์•ˆ ํ’€์—ˆ๋‹ค.

 

๊ฒฐ๊ตญ ๊ณ„์† ์ด ๋ฌธ์ œ๋ฅผ ํ‹€๋ฆฐ ์ด์œ ๋Š” 

๋ถ„๋ช… ์—ฐ๋ฃŒ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ–ˆ์„๋•Œ, ๊ฐˆ์ˆ˜์žˆ๋Š” ์ฃผ์œ ์†Œ(์ฃผ์œ ์†Œ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์—ฐ๋ฃŒ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ)์˜ ์—ฐ๋ฃŒ์˜ ์–‘์€ ๊ทธ๋ƒฅ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์™œ ์ด๊ฑธ ํ—ท๊ฐˆ๋ ธ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์—ฐ๋ฃŒ์˜ ์–‘ ์„ ์ตœ๋Œ€๊ฑฐ๋ฆฌ๋กœ ์žก๊ณ  ๋Š˜๋ ค๋‚˜๊ฐ€๋ฉด ๋˜๋Š”๋ฐ ์ •๋ฅ˜์†Œ์˜ ์œ„์น˜๋ฅผ ์žก์•„์คฌ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์— ๊ฐ„ ๊ฑฐ๋ฆฌ๋งŒํผ ๋นผ์ฃผ๊ณ , ์—ฐ๋ฃŒ๋งŒํผ ๋”ํ•ด์ฃผ๊ณ . ์ด๋Ÿฐ ๊ณผ์ •์—์„œ ๋ฐ˜๋ก€๊ฐ€ ์ƒ๊ธด ๊ฒƒ ๊ฐ™๋‹ค.

 

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
priority_queue<pair<int,int>, vector<pair<int,int>>, less<>>pq_fuel;
vector<pair<int,int>>v;
int N,L,P,ans, st,arr[10000];
int main(){
    cin>>N;
    for(int i=0; i<N; i++){
        int a, b;
        cin>>a>>b;
        v.push_back({a,b});
    }
    sort(v.begin(), v.end());
    cin>>L>>P;
    while(P+st < L){
        for(int i=0; i<v.size(); i++){
            if(arr[i]) continue;
            if(P >= v[i].first) {
                arr[i] = 1;
                pq_fuel.push({v[i].second, v[i].first});
            }
        }
        if(pq_fuel.empty()){
            cout<<-1;
            return 0;
        }
        P += pq_fuel.top().first;
        pq_fuel.pop();
        ans += 1;
    }
    cout<<ans;


}

'algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ 5021  (0) 2022.10.10
BOJ 20056  (0) 2022.10.09
BOJ 1174  (0) 2022.10.07
BOJ 14502  (0) 2022.10.07
BOJ 9252  (1) 2022.10.05