728x90
문제
https://www.acmicpc.net/problem/11047
문제 분석
동전의 개수와 총 만들어야하는 돈을 입력 받는다.
이후 동전의 가치가 정해진다.
이 동전의 가치로 총 만들어야하는 돈을 만들어야하고, 동전을 가장 적게 써야한다.
알고리즘 설계
동전의 개수와 만들어야하는 돈을 입력 받는다.
이후 vector에 동전들의 가치를 입력 받는다.
만들어야하는 돈이 0이 아니라면 계속 반복문을 돌려준다.
동전의 개수만큼 반복문을 돌려 해당하는 index의 동전이 만들어야하는 돈을 뛰어넘었다면 그 전 index의 동전에서 뺴주고, 출력할 값을 올린다.
혹은 마지막까지 갔다면 그냥 마지막 index에 해당하는 동전을 뺴주며 출력할 값을 올린다.
이후 사용한 코인의 개수를 출력한다.
코드
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int loop, money, input, coin = 0;
vector<int> vec;
cin >> loop >> money;
while (loop--)
{
cin >> input;
vec.push_back(input);
}
while (money)
{
for (int i = 0; i < vec.size(); ++i)
{
if (money < vec[i])
{
money -= vec[i - 1];
++coin;
break;
}
else if (i == vec.size() - 1)
{
money -= vec[i];
++coin;
break;
}
}
}
cout << coin;
}
vector의 reverse함수를 사용하여 돌려주고, 그걸로 만들었다면 조금 더 좋은 코드가 되었을거 같다.
728x90
'ALGORITHM > C++ - 백준' 카테고리의 다른 글
[백준 24446] 알고리즘 수업 - 너비 우선 탐색 3 (1) | 2023.10.19 |
---|---|
[백준 5635] 생일 (0) | 2023.10.19 |
[백준 1991] 트리 순회 (0) | 2023.10.19 |
[백준 5639] 이진 검색 트리 (0) | 2023.10.18 |
[백준 11725] 트리의 부모 찾기 (1) | 2023.10.18 |
댓글