๐งโ๐ป ๋ฐฑ์ค 11047
์ด์ ๊ธ ๐งโ๐ป ๋ฐฑ์ค 11053 ๋ณด๋ฌ๊ฐ๊ธฐ.
์ค๋ ํ ๋ฌธ์ ๋ 11047๋ฒ, ๋์ 0์ด๋ค.
N์ข
๋ฅ์ ๋์ ์ผ๋ก K์ ๊ฐ์ด์น๋ฅผ ๋ง๋ค ๋ ๊ฐ์ฅ ์ ์ ๋์ ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๊ฐ์ฅ ์ ์ ๋์ ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ๋ ๋์ ์ ์ต๋ํ ๋ง์ด ์ฌ์ฉํ ์๋ก ์ ๋ฆฌํ๋ค. ๋ง์นจ ๋์ ์ ๊ฐ์น๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์
๋ ฅ๋๊ธฐ ๋๋ฌธ์, ๋ง์ง๋ง์ ์
๋ ฅ๋ ๋์ ๋ถํฐ ๊ณ ๋ คํด์ฃผ๋ฉด ๋๋ค. ์ฒ์์ vector๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ ค๊ณ ํ์ง๋ง, vector๋ push_back()ํจ์๋ฅผ ์ง์ํ์ง๋ง push_front()๋ ์ง์ํ์ง ์๊ธฐ๋๋ฌธ์ ์
๋ ฅ๋ฐ์ ๋์ ์ ๊ฐ์ด์น๋ฅผ ๋ค๋ถํฐ ํ์ธํด์ค์ผํ๋ค. ํฐ ๋ฌธ์ ๋ ์๋์ง๋ง ์ด๊ฒ ๊ต์ฅํ ๊ท์ฐฎ๋ค๊ณ ์๊ฐํ๊ณ , ๋ ํ์์ ์ ์ฌ์ฉํ์ง ์์๋ list๋ฅผ ์ด๋ฐ ๋๋ผ๋ ์ฌ์ฉํด๋ณด๊ธฐ์ํด์ list๋ฅผ ์ด์ฉํด๋ณด์๋ค.
#include<iostream>
#include<list>
using namespace std;
int main(void){
int numberOfValues;
int targetValue;
int best = 0;
list<int> coinValue;
cin>>numberOfValues;
cin>>targetValue;
for(int i = 0; i < numberOfValues; i++){
int tempValue = 0;
cin>>tempValue;
coinValue.push_front(tempValue);
}
for(list<int>::iterator i = coinValue.begin(); i != coinValue.end(); ++i){
int currentCoin = targetValue / *i;
if(currentCoin > 0){
best += currentCoin;
targetValue -= ((*i) * currentCoin);
}
}
if(targetValue == 0){
cout<<best<<endl;
}
else{
cout<<"error occured!"<<endl;
}
return 0;
}
๋์ ์ ๊ฐ์ ๊ฐ์, ๋ง์ถฐ์ผํ๋ ๊ฐ์ด์น๋ฅผ ์
๋ ฅ๋ฐ๊ณ , ๋ฐ๋ณต๋ฌธ์ ํตํด ๋์ ์ ๊ฐ์น๋ค์ ์
๋ ฅ๋ฐ์ list์ ๋ฃ๋๋ค. list๋ push_front()๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ด์น๊ฐ ํฐ ๋์ ์ด ๋งจ ์์ ์์นํ๊ฒ๋๋ค. ์ดํ iterator๋ฅผ ํตํด list๋ฅผ ์ํํ๋ฉฐ ๊ฐ์ด ํฐ ๋์ ๋ถํฐ ๊ฐ์๋ฅผ ์ธ๊ณ ๊ฐ์ ๊น์๋ด๋ ค๊ฐ๋ฉฐ ํ์ํ ๋์ ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ฉด ๊ทธ๊ฒ ์ต์ ๋์ ์ ๊ฐ์๊ฐ ๋๋ค. ํน์๋ผ๋ ๊ณ์ฐ์ด ๋๋ ํ์๋ ์์ก์ด ๋จ์๊ฒฝ์ฐ๋ฅผ ๋๋นํด ์์ก์ด 0์์ด ์๋๋ฉด ์๋ฌ๋ผ๋ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค.
๋ค์ ๊ธ ๐งโ๐ป ๋ฐฑ์ค 11053 ๋ณด๋ฌ๊ฐ๊ธฐ.
Comments