https://www.acmicpc.net/problem/17521
๋ฌธ์
๊ตญ์ ์๋ณธ๋ถ๋์ฐํ์ฌ(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
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด๋ ์ต๋ํ ์ฝ๊ฒ ์ ๊ทผํ์.
๋๋ก ์ํ๋ฌธ์ ํธ๋๊ฒ๊ณผ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์๊ฐํด์ผํ๋ค.
์ปดํจํฐ๋ ์๊ฐ๋ณด๋ค ๋ฉ์ฒญํ๋ค
'๐ฆ Chango > ๐ฃ EDOC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] 9946๋ฒ: ๋จ์ด ํผ์ฆ (0) | 2021.11.02 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 9946๋ฒ : ๋จ์ด ํผ์ฆ (0) | 2021.10.18 |
BOJ ๋ฐฑ์ค 20170๋ฒ: Commemorative Dice (0) | 2021.10.01 |
BOJ ๋ฐฑ์ค 16283๋ฒ : Farm (0) | 2021.09.29 |
[์๊ฐ][BOJ][C++] ๋ฐฑ์ค 20044๋ฒ: Project Teams (0) | 2021.09.29 |