개발자 톡

연습문제 톡 GBC

c++로 풀었습니다.

등록일
2024-09-11 15:45:39
조회수
163
작성자
hyymi1469
#include<iostream>
#include<vector>

using namespace std;

int main(int argc, char** argv)
{

    int m = 0;
    int n = 0;
    cin >> m >> n;
    std::vector<std::pair<int,int>> pivotVec;
    std::vector<std::pair<int,int>> customVec;

    for(int i = 0; i < m; ++i)
    {
        int dis = 0;
        int speed = 0;
        cin >> dis >> speed;
        pivotVec.emplace_back(std::pair(dis, speed));
    }

    for(int i = 0; i < n; ++i)
    {
        int dis = 0;
        int speed = 0;
        cin >> dis >> speed;
        customVec.emplace_back(std::pair(dis, speed));
    }

    // 로직 시작
    int result = 0;
    for(auto iter : pivotVec)
    {
        int pivotDis = iter.first;
        const int pivotSpeed = iter.second;
        int delCustomCount = 0;
        
        for(auto& iter2 : customVec)
        {
            int& customDis = iter2.first;
            const int customSpeed = iter2.second;
            bool isContinue = false;
            
            if(pivotDis > customDis)
            {
                pivotDis -= customDis;
                ++delCustomCount;
                isContinue = true;
            }
            else if(pivotDis < customDis)
            {
                customDis -= pivotDis;
            }
            else
            {
                ++delCustomCount;
            }

            if(pivotSpeed < customSpeed)
            {
                int tempSpeed = customSpeed - pivotSpeed;
                if(result < tempSpeed)
                    result = tempSpeed;
            }

            if(!isContinue)
                break;
        }

        for(int i = 0; i < delCustomCount; ++i)
            customVec.erase(customVec.begin());
    }

    cout << result;
    
    return 0;
}


좀 더 효율적으로 짤 수도 있는데 생각나는대로 막 했습니다.

#GBC

이 카테고리의 톡 더보기