[BAEKJOON] 백준 2909: 캔디 구매 (C#)

2024. 6. 6. 18:46IT/BaekJoon

문제 링크

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

 

 

문제

오늘은 화이트데이이다. 상근이는 여자친구를 위해서 사탕을 사려고 한다. 하지만, 상근이는 독특한 성격을 가지고 있어서, 특정 액면가의 지폐만 가지고 있는다. 또, 거스름돈은 받지 않는다. 따라서, 사탕 가게의 사장과 상근이는 다음과 같은 합의를 했다. 상근이는 사장에게 자신이 가지고 있는 지폐의 액면가를 말해준다. 그럼 사장은 상근이가 지불할 수 있는 가장 가까운 금액으로 사탕의 가격을 반올림해준다.

예를 들어, 상근이가 가지고 있는 지폐의 액면가가 100원이라고 하자. 만약 상근이가 고른 사탕의 가격이 150원이라면, 사장은 가격을 200원으로 반올림해서 상근이가 낼 수 있도록 해준다. 또, 가격이 149원이라면, 사장은 가격을 100원으로 반올림해서 상근이가 지불할 수 있도록 해준다.

상근이가 가지고 있는 지폐의 액면가는 항상 1, 10, 100, 1000, ..., 1,000,000,000 중 하나이다. 또, 지폐를 무한개 가지고 있다.

사탕 가격과 상근이가 가지고 있는 지폐의 액면가가 주어졌을 때, 사장은 가격을 얼마로 바꿔줄 것인지 구하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 사탕의 가격 C와 상근이가 가지고 있는 지폐의 액면가에 적혀있는 0의 개수 K가 주어진다. (0 ≤ C ≤ 1,000,000,000, 0 ≤ K ≤ 9)

 

 

출력

첫째 줄에 상근이가 내야하는 가격을 출력한다.

 

 

 

통과한 답안

namespace _2909
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string[] inputs = Console.ReadLine().Split(' ');
            int C = int.Parse(inputs[0]);
            int K = int.Parse(inputs[1]);
            int money = (int)Math.Pow(10, K);

            int answer = ((C + (money / 2)) / money) * money;
            Console.WriteLine(answer);
        }
    }
}

 

K로 주어지는 10의 제곱수에 맞는 범위에서 반올림하는 코드를 작성하는 문제이다.

 

주어진 K를 이용하여 10의 제곱수를 money로 구하고

반올림의 임계값(money / 2)을 구하고 C에 더한 후에 나눠서 반올림이 되게 구현하였다.