https://www.acmicpc.net/problem/11047
그리디 알고리즘으로 분류된 동전 0 문제 입니다.
우선 주어지는 동전의 값어치 중 1원짜리는 항상 A[0]에 있으므로 문제가 풀리지 않는 경우는 없습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _11047
{
class Program
{
static void Main(string[] args)
{
string[] inputArray = Console.ReadLine().Split(' ');
int coinTypeCount = int.Parse(inputArray[0]);
int money = int.Parse(inputArray[1]);
int needCoin = 0;
List<int> coinList = new List<int>();
for (int i = 0; i < coinTypeCount; i++)
//핵심 부분.
{
needCoin += money / coinList[i];
money = money % coinList[i];
}
//여기까지.
Console.WriteLine(needCoin);
}
}
}
|
핵심 부분이 이 문제의 전체 입니다. 나머지는 변수 입력 및 초기화 입니다.
동전의 값이 소트가 되어 있으므로 가장 금액이 큰 동전부터 주어진 돈에 나누어
몫을 동전의 갯수로 더하고 나머지를 다음 동전으로 진행 했습니다.
동전의 값이 주어진 돈보다 커져서 나눠지지 않아도 상관 없습니다. 몫이 0이므로
동전의 갯수는 늘어나지 않으며 돈을 동전으로 나눈 나머지 또한 처음 돈의 값 그대로 들어갑니다.
좀더 빨리 종료하려면 money가 0이될 때 종료하면 되겠습니다.
백준#10951 - A+B - 4 (0) | 2020.04.08 |
---|---|
백준#10952-A+B - 5 (0) | 2020.04.08 |
백준#1931-회의실배정 (0) | 2020.04.07 |
백준#11399-ATM (0) | 2020.04.07 |
백준#9498-시험 성적 (0) | 2020.04.06 |