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

[๋ฐฑ์ค€,c++] 1094๋ฒˆ - ๋ง‰๋Œ€๊ธฐ

by ์•ˆ์ฃผํ˜• 2022. 3. 14.

๋ฌธ์ œ

 

1094๋ฒˆ: ๋ง‰๋Œ€๊ธฐ

์ง€๋ฏผ์ด๋Š” ๊ธธ์ด๊ฐ€ 64cm์ธ ๋ง‰๋Œ€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์–ด๋Š ๋‚ , ๊ทธ๋Š” ๊ธธ์ด๊ฐ€ Xcm์ธ ๋ง‰๋Œ€๊ฐ€ ๊ฐ€์ง€๊ณ  ์‹ถ์–ด์กŒ๋‹ค. ์ง€๋ฏผ์ด๋Š” ์›๋ž˜ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ง‰๋Œ€๋ฅผ ๋” ์ž‘์€ ๋ง‰๋Œ€๋กœ ์ž๋ฅธ๋‹ค์Œ์—, ํ’€๋กœ ๋ถ™์—ฌ์„œ ๊ธธ์ด๊ฐ€ Xcm์ธ ๋ง‰๋Œ€

www.acmicpc.net

 

์ฝ”๋“œ

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

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int X; cin>>X;
    int sum = 0;
    vector<int>piece;
    piece.push_back(64);
    
    if(X==64){
        cout<<1;
        return 0;
    }
    while(true){
        sort(piece.begin(),piece.end());
        for(int i:piece) sum+=i;
        if(sum==X) break;
        if(sum>X){
            int half = piece.front()/2;
            if(sum-half>X){
                piece.erase(piece.begin());
                piece.push_back(half);
            }
            else{
                piece.erase(piece.begin());
                piece.push_back(half);
                piece.push_back(half);
            }
        }
        sum=0;
    }
    cout<<piece.size()-1;
}

 

ํ’€์ด(40๋ถ„)

์ด๋ฒˆ์—๋„ ๊ตฌํ˜„ ์‹œ๊ฐ„์€ 7๋ถ„๋„ ์ฑ„ ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ 30๋ถ„ ๊ฑธ๋ ธ๋‹ค. ๋ฉ์ฒญํ•œ ๊ฒŒ ํ™•์‹คํ•˜๋‹ค.

 

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ์—์„œ ๋ง‰๋Œ€๋ฅผ ์ž๋ฅด๊ณ , ์ •์„์œผ๋กœ ๋˜‘๊ฐ™์ด ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๋ฅผ ๋ณด๋‹ˆ ์ˆ˜ํ•™์ด์—ˆ๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹ค๋“ค ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์„ ๋ณด๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด๋ฅผ ๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋Œ“๊ธ€