본문 바로가기

알고리즘

[백준 2979] 트럭 주차

www.acmicpc.net/problem/2979

 

2979번: 트럭 주차

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

www.acmicpc.net

 

이문제는 고정된 크기로 입력이 들어오기 때문에

배열의 크기나 입력등을 고정적으로 두었다.

 

문제에서 유의할점은

1대일때 1대당 A가격

2대일때 1대당 B가격(B*2)

3대일때 1대당 C가격(C*3)

으로 1대당 가격을 잘 생각해야한다.

 

그리고 시간이라는 것도 참고해야한다.(ex 1~6 = 5시간)

 

그래서입력으로 들어온 길이만큼 배열을 1로 바꾸고 

다음 반복문에서 배열 0 1 2 에서 1인 원소의 개수를 알아낸다. = 동시간대에 차의 개수

그리고 그차에 개수만금 가격을 부여 총 가격이므로 위처럼 차 대수도 고려하면 된다.

 

 

#include <iostream>

using namespace std;

int g_nMap[3][100];

int main(void)
{
    int A = 0;
    int B = 0;
    int C = 0;
    int nMin  = 0;
    int nMax  = 0;
    int nStart = 0;
    int nEnd = 0;
    int nTmp = 0;
    int nAns = 0;

    cin >> A >> B >> C;

    for(int i = 0; i < 3; i++)
    {
        cin >> nStart >> nEnd;
        
        if(i == 0)
        {
            nMin = nStart;
            nMax = nEnd;
        }
        else
        {
            if(nStart < nMin)
                nMin = nStart;
            if(nEnd > nMax)
                nMax = nEnd;
        }

        for(int j = nStart; j < nEnd; j++)
        {
            g_nMap[i][j] = 1;
        }
    }

    for(int i = nMin; i < nMax; i++)
    {
        nTmp = g_nMap[0][i] + g_nMap[1][i] + g_nMap[2][i];
        if (nTmp == 1)
            nAns += A;
        else if(nTmp == 2)
            nAns += B*2;
        else if(nTmp == 3)
            nAns += C*3;
    }

    cout << nAns << endl;

    return 0;
}

'알고리즘' 카테고리의 다른 글

[백준 16953] A > B  (2) 2020.10.16
[백준 11729] 하노이 탑 이동 순서  (0) 2020.10.15
[백준 16504] 종이접기  (0) 2020.10.14
[백준 1911] 흙길 보수하기  (0) 2020.10.14
[백준 17938] 퐁당퐁당2  (0) 2020.10.03