๐Ÿ“ฆ Chango/๐Ÿฃ EDOC

[BOJ][C++] ๋ฐฑ์ค€ 17521๋ฒˆ : Byte Coin

์„ ๋‹ฌ 2021. 10. 6. 11:30
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/17521

 

17521๋ฒˆ: Byte Coin

์ž…๋ ฅ์€ ํ‘œ์ค€์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ค„์— ์š”์ผ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์–‘์˜ ์ •์ˆ˜ n๊ณผ ์ดˆ๊ธฐ ํ˜„๊ธˆ W(1 ≤ n ≤ 15, 1 ≤ W ≤ 100,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ n ๊ฐœ์˜ ์ค„์—์„œ, i๋ฒˆ์งธ ์ค„์€ i์ผ์˜ ๋ฐ”์ดํŠธ ์ฝ”์ธ ๊ฐ€๊ฒฉ์„ ๋‚˜

www.acmicpc.net

 

๋ฌธ์ œ

๊ตญ์ œ์ž๋ณธ๋ถ€๋™์‚ฐํšŒ์‚ฌ(ICPC)๋Š” ๋ฐ”์ดํŠธ ์ฝ”์ธ(Byte Coin)์— ์ž๊ธˆ์„ ํˆฌ์žํ•˜๊ณ  ์žˆ๋‹ค. ๋ฐ”์ดํŠธ ์ฝ”์ธ์€ ๊น€๋ฐ•์‚ฌ๊ฐ€ ๋งŒ๋“  ๊ฐ€์ƒ ํ™”ํ์ด๋‹ค. ์‹ค์ œ๋กœ๋Š” ๋ฐ”์ดํŠธ ์ฝ”์ธ ๊ฐ€๊ฒฉ์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์—†์ง€๋งŒ ์ด ๋ฌธ์ œ์—์„œ๋Š” ๋ฐ”์ดํŠธ ์ฝ”์ธ ๊ฐ€๊ฒฉ ๋“ฑ๋ฝ์„ ๋ฏธ๋ฆฌ ์ •ํ™•ํžˆ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

์šฐ๋ฆฌ๋Š” 1์ผ๋ถ€ํ„ฐ n์ผ๊นŒ์ง€ n์ผ ๋™์•ˆ ๊ทธ๋ฆผ 1๊ณผ ๊ฐ™์ด ๋ฐ”์ดํŠธ ์ฝ”์ธ์˜ ๋“ฑ๋ฝ์„ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ์ดˆ๊ธฐ ํ˜„๊ธˆ W๊ฐ€ ์ฃผ์–ด์ ธ ์žˆ๋‹ค. ๊ทธ๋ฆผ 1์˜ ๋นจ๊ฐ„์ƒ‰ ๋„ค๋ชจ๋Š” ํ•ด๋‹น ์ผ์ž์˜ ๋ฐ”์ดํŠธ ์ฝ”์ธ ๊ฐ€๊ฒฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋งค์ผ ๋ฐ”์ดํŠธ ์ฝ”์ธ์„ ๋งค์ˆ˜ํ•˜๊ฑฐ๋‚˜ ๋งค๋„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ๋‹ค๋งŒ ๋ฐ”์ดํŠธ ์ฝ”์ธ ํ•˜๋‚˜๋ฅผ ๋‚˜๋ˆ„์–ด ๋งค๋„ํ•˜๊ฑฐ๋‚˜ ๋งค์ˆ˜ํ•  ์ˆ˜๋Š” ์—†๋‹ค. ์šฐ๋ฆฌ๋Š” n์ผ ๋‚  ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ฝ”์ธ์„ ๋งค๋„ํ•  ๋•Œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ˜„๊ธˆ์„ ์ตœ๋Œ€ํ™”ํ•˜๊ณ  ์‹ถ๋‹ค. 

๊ทธ๋ฆผ 1. 10 ์ผ๊ฐ„ ๋ฐ”์ดํŠธ ์ฝ”์ธ ๊ฐ€๊ฒฉ ๋“ฑ๋ฝ ๊ทธ๋ž˜ํ”„

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ทธ๋ฆผ 1๊ณผ ๊ฐ™์€ ๋ฐ”์ดํŠธ ์ฝ”์ธ ๋“ฑ๋ฝ ๊ทธ๋ž˜ํ”„๋ฅผ ์ฒซ๋‚  ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ์–ด์ง„ ์ดˆ๊ธฐ ํ˜„๊ธˆ์ด 24๋ผ๊ณ  ํ•˜์ž. ์ˆ˜์ต์„ ์ตœ๋Œ€ํ•œ ๋†’์ด๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”์ดํŠธ ์ฝ”์ธ์„ ๋งค์ˆ˜, ๋งค๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ ๋‚  ํ˜„๊ธˆ 20์„ ์จ์„œ 4๊ฐœ์˜ ์ฝ”์ธ์„ ์‚ฐ๋‹ค. ๋‘˜์งธ ๋‚  ๋ชจ๋“  ์ฝ”์ธ์„ ๋งค๋„ํ•ด์„œ ํ˜„๊ธˆ 28์„ ์–ป๊ณ  ๋ชจ๋‘ 32์˜ ํ˜„๊ธˆ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค. 5์ผ์งธ ๋˜๋Š” ๋‚  ํ˜„๊ธˆ 32๋ฅผ ์จ์„œ 16๊ฐœ์˜ ์ฝ”์ธ์„ ๋งค์ˆ˜ํ•œ๋‹ค. 7์ผ์งธ ๋˜๋Š” ๋‚  ๋ชจ๋“  ์ฝ”์ธ์„ ๋งค๋„ํ•ด์„œ ๋ชจ๋‘ 128์˜ ํ˜„๊ธˆ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค. 9์ผ์งธ ๋˜๋Š” ๋‚  ํ˜„๊ธˆ 126์„ ์จ์„œ 42๊ฐœ์˜ ์ฝ”์ธ์„ ์‚ฌ๊ณ  10์ผ ๋‚  ๋ชจ๋“  ์ฝ”์ธ์„ ๋งค๋„ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 10์ผ ๋‚  ํ˜„๊ธˆ์ด 170์ด ๋˜๊ณ  ์ด๊ฒƒ์ด ์ตœ๋Œ€์ด๋‹ค.

์š”์ผ ์ˆ˜ n, ์ดˆ๊ธฐ ํ˜„๊ธˆ W, 1์ผ๋ถ€ํ„ฐ n์ผ๊นŒ์ง€ ๊ฐ ์š”์ผ์˜ ๋ฐ”์ดํŠธ ์ฝ”์ธ ๊ฐ€๊ฒฉ์ด ์ฃผ์–ด์งˆ ๋•Œ, n์ผ ๋‚  ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ฝ”์ธ์„ ๋งค๋„ํ•  ๋•Œ ๋ณด์œ ํ•˜๊ฒŒ ๋  ์ตœ์ข… ํ˜„๊ธˆ์˜ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ž…๋ ฅ์€ ํ‘œ์ค€์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ค„์— ์š”์ผ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์–‘์˜ ์ •์ˆ˜ n๊ณผ ์ดˆ๊ธฐ ํ˜„๊ธˆ W(1 ≤ n ≤ 15, 1 ≤ W ≤ 100,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ n ๊ฐœ์˜ ์ค„์—์„œ, i๋ฒˆ์งธ ์ค„์€ i์ผ์˜ ๋ฐ”์ดํŠธ ์ฝ”์ธ ๊ฐ€๊ฒฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ si๊ฐ€ ์ฃผ์–ด์ง„๋‹ค(1 ≤ si ≤ 50).

์ถœ๋ ฅ

์ถœ๋ ฅ์€ ํ‘œ์ค€์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. n์ผ ๋‚  ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ฝ”์ธ์„ ๋งค๋„ํ•  ๋•Œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ˜„๊ธˆ์˜ ์ตœ๋Œ“๊ฐ’์„ ํ•œ ํ–‰์— ์ถœ๋ ฅํ•œ๋‹ค. ๋น„๋ก ์ดˆ๊ธฐ ํ˜„๊ธˆ W๋Š” ๊ทธ๋ ‡๊ฒŒ ํฌ์ง€ ์•Š์ง€๋งŒ ์ตœ์ข… ํ˜„๊ธˆ์€ ๋งค์šฐ ์ปค์งˆ ์ˆ˜ ์žˆ์Œ์— ์ฃผ์˜ํ•˜์ž.

 

ํ’€์ด

๋”๋ณด๊ธฐ
#include <iostream>

using namespace std;

int main () {
    
    //์ž…๋ ฅ
    int n;
    long long w;
    cin >> n >> w;
    int s[n];
    for(int i=0; i<n; i++)
        cin >> s[i];
    
    //์„ธํŒ…
    long long coin = 0;
    for(int i=0; i<n; i++){ //์ดํ›„์— ๋‚˜์˜ค๋Š” ๊ฐ’์ด ์ฒซ์งธ๋‚ ๋ณด๋‹ค ํฌ๋‹ค๋ฉด ํ’€๋งค์ˆ˜ ํ•˜๊ณ  ์‹œ์ž‘, ์ž‘๋‹ค๋ฉด ๊ทธ๋ƒฅ ๋ฐ”๋กœ ์‹œ์ž‘
        if(s[0] < s[i]){
            coin += w/s[0];
            w -= coin*s[0];
            break;
        }
        else if(s[0] > s[i])
            break;
    }
    
    //๊ณ„์‚ฐ
    for(int i=1; i<n-1; i++){  //์ธ๋ฑ์Šค๊ฐ€ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ  n-1์—์„œ ๋๋‚œ๋‹ค๋Š” ์  ์ฃผ์˜
        if(s[i] > s[i+1] && s[i] > s[i-1]){
            //๊ทน๋Œ“๊ฐ’ -> ํ’€๋งค๋„
            w += coin*s[i];
            coin = 0;
        }
        if(s[i] < s[i+1] && s[i] < s[i-1]){
            //๊ทน์†Ÿ๊ฐ’ -> ํ’€๋งค์ˆ˜
            coin += w/s[i];
            w -= coin*s[i];
        }
    }
    
    //๋งˆ์ง€๋ง‰๋‚  ํ’€๋งค๋„
    w += coin*s[n-1];
    
    //์ถœ๋ ฅ
    cout << w;
    
    return 0;
}
#include <iostream>

using namespace std;

int main () {
    
    //์ž…๋ ฅ
    int n;
    long long w;
    cin >> n >> w;
    int s[n];
    for(int i=0; i<n; i++)
        cin >> s[i];
    
    //์„ธํŒ…
    long long coin = 0;
    
    //๊ณ„์‚ฐ
    for(int i=0; i<n; i++){
        if(s[i] > s[i+1] ){
            //๋‹ค์Œ๋‚ ๋ณด๋‹ค ํฌ๋ฉด -> ํ’€๋งค๋„
            w += coin*s[i];
            coin = 0;
        }
        if(s[i] < s[i+1]){
            //๋‹ค์Œ๋‚ ๋ณด๋‹ค ์ž‘์œผ๋ฉด -> ํ’€๋งค์ˆ˜
            long long tmp = w/s[i];
            w -= tmp*s[i];
            coin += tmp;
        }
    }
    
    //๋งˆ์ง€๋ง‰๋‚  ํ’€๋งค๋„
    w += coin*s[n-1];
    
    //์ถœ๋ ฅ
    cout << w;
    
    return 0;
}

 

TIL

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด๋Š” ์ตœ๋Œ€ํ•œ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜์ž.

๋‡Œ๋กœ ์ˆ˜ํ•™๋ฌธ์ œ ํ‘ธ๋Š”๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค.

์ปดํ“จํ„ฐ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๋ฉ์ฒญํ•˜๋‹ค

๋ฐ˜์‘ํ˜•