코딩 테스트/BOJ

C# 2979 트럭 주차

s0002 2023. 1. 19. 22:33

처음에 트럭이 주차장에 있을 수 있는 경우의 수를 고려해서 너무 복잡하고 어려웠는데

다른 블로그 참고해서 생각을 정리할 수 있었다

배열을 저렇게 많이 만들어도 되나 싶긴한데 제출하면 맞았다고 나온다

using System;
using System.Linq;

namespace _2979
{
    class Program
    {
        static void Main(string[] args)
        {
            //비용 입력받기
            int[] costs = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
            //트럭 출입 시간 입력받기
            int[] truck0= Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
            int[] truck1= Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse); 
            int[] truck2= Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
            
            //비용 각각 A, B, C로 표기
            int A = costs[0];
            int B = costs[1];
            int C = costs[2];

            //도착 시간, 떠난 시간별로 배열 만들기
            int[] start = { truck0[0], truck1[0], truck2[0] };
            int[] end = { truck0[1], truck1[1], truck2[1] };

            //트럭별로 주차장에 머문 시간 저장할 배열
            int[] x = new int[end.Max()+1];
            int[] y = new int[end.Max()+1];
            int[] z = new int[end.Max()+1];

            int sum = 0;

            //트럭이 그 시간에 주차장에 머물렀으면 배열에 1 저장
            for(int i=start.Min(); i < end.Max(); i++)
            {
                if(i>=start[0] && i<end[0])
                    x[i] = 1;

                if (i >= start[1] && i < end[1])
                    y[i] = 1;

                if (i >= start[2] && i < end[2])
                    z[i] = 1;
            }
            //각 시간마다 머문 트럭의 수를 세고 그 때의 요금 계산해서 누적
            for (int i = start.Min(); i < end.Max(); i++)
            {
                if (x[i] + y[i] + z[i] == 1)
                    sum = sum + A;
                if(x[i] + y[i] + z[i] == 2)
                    sum = sum + B*2;
                if (x[i] + y[i] + z[i] == 3)
                    sum = sum + C*3;
            }
            Console.WriteLine(sum);
        }
    }
}

 

참고

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=occidere&logNo=220867709209 

 

[백준] 2979 - 트럭 주차

문제 링크: https://www.acmicpc.net/problem/2979시뮬레이션 문제는 풀때 참 편하다. 설명에 나와있...

blog.naver.com

 

 

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

 

2979번: 트럭 주차

첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100) 다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장

www.acmicpc.net

 

'코딩 테스트 > BOJ' 카테고리의 다른 글

C# 1654 랜선 자르기(틀림)  (0) 2023.01.26
C# 2003 수들의 합2  (0) 2023.01.20
C# 10808 알파벳 개수  (0) 2023.01.19
C# 1439 뒤집기  (0) 2023.01.18
C# 5585 거스름돈  (0) 2023.01.18