1000원을 내고 최소 몇개의 동전으로 거스름돈을 받을수있는지 출력하는 문제입니다.
그리디 알고리즘을 사용해요
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
|
using System;
class Program
{
static void Main(string[] args)
{
// 받을 거스름돈입니다.
int change = 1000 - int.Parse(Console.ReadLine());
// 나중에 출력할 받을 동전의 최소 개수입니다.
int count = 0;
// 내림차순으로 정렬되있는 동전의 종류입니다.
int[] coins = { 500, 100, 50, 10, 5, 1 };
// 동전의 개수만큼 for문을 실행합니다.
// 동전의 순서는 내림차순이기때문에 500원부터 시도합니다.
for (int i = 0; i < coins.Length; i++)
{
// 만약 i번째 동전으로 나눠지지 않는다면
// 바로 넘어가고 더 값이 작은 동전으로 시도합니다.
if (change / coins[i] < 1) continue;
// count에 몫을 더합니다.
count += change / coins[i];
// change를 coins[i]로 나누고 나머지를 change에 넣습니다.
change %= coins[i];
// 받을 잔돈이 0이면 반복을 종료합니다.
if (change == 0) break;
}
Console.WriteLine(count);
}
}
|
cs |
수고하셨습니다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 2644번 촌수계산 파이썬 풀이 (0) | 2021.03.19 |
---|---|
백준 1094번 막대기 파이썬 풀이 (0) | 2021.03.13 |
백준 1292번 쉽게 푸는 문제 파이썬 풀이 (0) | 2021.03.12 |