[BOJ] 11047 : 동전
Question
Solution
- K를 맞추기 위한 최솟값이니 K보다 바로 아래에 있는 값으로 감산해 나가면 될 것 같다
Cord
[C#]
using System;
class Program
{
static void Main()
{
int answer = 0;
string[] input = Console.ReadLine().Split(' ');
int coins = int.Parse(input[0]); // 코인수 N
int goal = int.Parse(input[1]); // 목표 값 K
int[] coinsValue = new int[coins]; // 코인들의 값
// 입력 받은 값을 배열에 저장
for(int idx = 0; idx < coins; idx++)
{
coinsValue[idx] = int.Parse(Console.ReadLine());
}
// 큰 값을 먼저 찾아서 감산해야 하기 때문에
// 높은 순서로 재정렬
Array.Reverse(coinsValue);
while (goal != 0)
{
for (int idx = 0; idx < coinsValue.Length; idx++)
{
if (coinsValue[idx] <= goal)
{
goal -= coinsValue[idx];
answer++;
idx--; // 다시 검사하기 위함
}
}
}
Console.WriteLine(answer);
}
}
[C++]
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int answer = 0;
int coins, goal;
cin >> coins >> goal;
vector<int> coinsValue(coins);
for (int idx = 0; idx < coinsValue.size(); idx++)
{
cin >> coinsValue[idx];
}
// 시작과 끝부분을 지정하여 리버스 시킴
reverse(coinsValue.begin(), coinsValue.end());
while (goal != 0)
{
for(int idx = 0; idx < coinsValue.size(); idx++)
{
if (goal >= coinsValue[idx])
{
goal -= coinsValue[idx];
idx--;
answer++;
}
}
}
cout << answer;
return 0;
}
Result
What`s new
C++
vector 라고 STL에 있는 컨테이너라고 한다.
배열과 같은 자료구조 인가 보다.