๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 16987๋ฒˆ - ๊ณ„๋ž€์œผ๋กœ ๊ณ„๋ž€์น˜๊ธฐ

by ์•ˆ์ฃผํ˜• 2022. 8. 20.

๋ฌธ์ œ

 

16987๋ฒˆ: ๊ณ„๋ž€์œผ๋กœ ๊ณ„๋ž€์น˜๊ธฐ

์›๋ž˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๊ธฐ๋ณธ ์†Œ์–‘์€ ํŒ”๊ตฝํ˜€ํŽด๊ธฐ๋ฅผ ๋‹จ ํ•œ ๊ฐœ๋„ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•˜์ง€๋งŒ ์ธ๋ฒ”์ด๋Š” 3๋Œ€ 500์„ ๋„˜๊ธฐ๋Š” ๋ช‡ ์•ˆ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ ์ค‘ ํ•œ ๋ช…์ด๋‹ค. ์ธ๋ฒ”์ด๋Š” BOJ์—์„œ ํ‹€๋ฆฐ ์ œ์ถœ์„ ํ•  ๋•Œ๋งˆ๋‹ค ํ„ฑ

www.acmicpc.net

 

์ฝ”๋“œ

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

int N, ans, temp_cnt;
vector<pair<int,int>>v;

void backtracking(int idx){
    if(idx == N+1) return;
    
    for(int i=0; i<N; i++){
        if(v[idx].first<=0) backtracking(idx+1);
        else if(v[i].first<=0 || i==idx) continue;
        else{
            v[idx].first -= v[i].second;
            v[i].first -= v[idx].second;
            backtracking(idx+1);
            v[idx].first += v[i].second;
            v[i].first += v[idx].second;
        }
    }
    
    for(int i=0; i<N; i++){
        if(v[i].first<=0) temp_cnt++;
    }
    ans = max(ans, temp_cnt);
    temp_cnt = 0;
    
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin>>N;
    for(int i=0; i<N; i++){
        int a, b; cin>>a>>b;
        v.push_back({a,b}); // {๋‚ด๊ตฌ๋„, ๋ฌด๊ฒŒ}
    }
    
    backtracking(0);
    
    cout<<ans;
}

 

ํ’€์ด

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

์œ„ ์กฐ๊ฑด์— ๋งž๊ฒŒ ๋ฐฑํŠธ๋ž™ํ‚น์„ ๋Œ๋ฆฌ๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

1๋ฒˆ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด ์ฒซ ๋ฐฑํŠธ๋ž™ํ‚น์˜ ์ธ๋ฑ์Šค๋Š” 0๋ฒˆ์œผ๋กœ ์ฃผ์—ˆ๊ณ , 3๋ฒˆ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ฐฑํŠธ๋ž™ํ‚น์˜ ๋‹ค์Œ ์ธ๋ฑ์Šค๋Š” ํ˜„์žฌ (๊ณ„๋ž€ ์ธ๋ฑ์Šค +1)๋กœ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ 2๋ฒˆ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์กฐ๊ฑด๋ฌธ์„ ์ฃผ์–ด์„œ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€