상세 컨텐츠

본문 제목

백준#5585 - 거스름돈

C#/알고리즘

by McRobbin 2020. 4. 8. 10:14

본문

https://www.acmicpc.net/problem/5585

 

5585번: 거스름돈

문제 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사고 카운터에서 1000엔 지폐를 한장 냈을 때, 받을 잔돈에 포함된 잔돈의 개수를 구하는 프로그램을 작성하시오. 예를 들어 입력된 예1의 경우에는 아래 그림에서 처럼 4개를 출력해야 한다. 입력 입력은 한줄로 이루어져있고, 타로가 지불할

www.acmicpc.net

그리디 알고리즘으로 분류된 문제입니다.

 

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _5585
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] coinArray = { 500100501051 };
            int coinCount = 0;
            int remainMoney = 1000 - int.Parse(Console.ReadLine());
            foreach(int coin in coinArray)
            {
                coinCount = coinCount + remainMoney / coin;
                remainMoney = remainMoney % coin;
            }
            Console.WriteLine(coinCount);
        }
    }
}
 
 
 

동전의 종류가 정해져 있고 많지 않으므로 배열로 선언했습니다.

물건의 가격을 입력받아 거스름돈을 int형으로 저장했습니다.

 

foreach문으로 동전의 값이 큰 것부터 가져와 잔돈과 나눈 몫을 동전 갯수에 더해주고

남은 돈을 해당 동전 값의 나머지로 덮어줍니다.

 

백준 11047 - 동전 0 문제와 유사합니다.

'C# > 알고리즘' 카테고리의 다른 글

백준#10818 - 최소, 최대  (0) 2020.04.08
백준#1110 - 더하기 사이클  (0) 2020.04.08
백준#10951 - A+B - 4  (0) 2020.04.08
백준#10952-A+B - 5  (0) 2020.04.08
백준#1931-회의실배정  (0) 2020.04.07

관련글 더보기