[BAEKJOON] 백준 2979: 트럭 주차 (C#)

2024. 6. 7. 00:58IT/BaekJoon

문제 링크

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

 

 

문제

상근이는 트럭을 총 세 대 가지고 있다. 오늘은 트럭을 주차하는데 비용이 얼마나 필요한지 알아보려고 한다.

상근이가 이용하는 주차장은 주차하는 트럭의 수에 따라서 주차 요금을 할인해 준다.

트럭을 한 대 주차할 때는 1분에 한 대당 A원을 내야 한다. 두 대를 주차할 때는 1분에 한 대당 B원, 세 대를 주차할 때는 1분에 한 대당 C원을 내야 한다.

A, B, C가 주어지고, 상근이의 트럭이 주차장에 주차된 시간이 주어졌을 때, 주차 요금으로 얼마를 내야 하는지 구하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100)

다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장에서 떠난 시간이다. 도착한 시간은 항상 떠난 시간보다 앞선다. 입력으로 주어지는 시간은 1과 100사이 이다.

 

 

출력

첫째 줄에 상근이가 내야하는 주차 요금을 출력한다.

 

 

 

통과한 답안

namespace _2979
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string[] inputs = Console.ReadLine().Split(' ');
            int A = int.Parse(inputs[0]);
            int B = int.Parse(inputs[1]);
            int C = int.Parse(inputs[2]);

            int[,] trucks = new int[3, 2];
            for (int i = 0; i < 3; i++)
            {
                string[] times = Console.ReadLine().Split(' ');
                trucks[i, 0] = int.Parse(times[0]);
                trucks[i, 1] = int.Parse(times[1]);
            }

            int[] timeSlots = new int[101];
            for (int i = 0; i < 3; i++)
            {
                for (int t = trucks[i, 0]; t < trucks[i, 1]; t++)
                {
                    timeSlots[t]++;
                }
            }

            int totalFee = 0;
            for (int t = 1; t <= 100; t++)
            {
                if (timeSlots[t] == 1)
                {
                    totalFee += A;
                }
                else if (timeSlots[t] == 2)
                {
                    totalFee += B * 2;
                }
                else if (timeSlots[t] == 3)
                {
                    totalFee += C * 3;
                }
            }

            Console.WriteLine(totalFee);
        }
    }
}

 

트럭이 3대 있을 때, 주차장에 각각의 트럭을 주차하기 시작한 시간과 끝난 시간이 주어진다.

이 경우의 총 주차요금을 구하는 문제인데,

주차된 트럭의 수에 따라서 금액이 달라지는게 특징인 문제이다.

 

각 트럭들의 정보를 받아온 후에 timeSlots라는 101 크기의 배열을 만든 뒤에

특정 시점 t에서 주차된 경우 해당 값을 증가하도록 구현하여서

특정 시점 t에 주차된 트럭의 수를 확인할 수 있도록 만들었다.

그 후에 timeSlots를 순회하면서 트럭의 수 만큼의 요금을 더하게 구현하였다.