[HackerRank/C++] Service Lane

2023. 2. 7. 07:51코딩테스트 해커랭크/Algorithms -Easy

갓길의 넓이 값이 배열로 주어지고, cases에는 해당 넓이 배열의 인덱스 케이스를 받는다

 

각 cases의 값에서 들어갈수 있는 최대 넓이를 구하고 return 한다

vector<int> serviceLane(int n, vector<vector<int>> cases, vector<int> width)
{
    vector<int> result;
    
    for (int i = 0; i < cases.size(); ++i)
    {
        int temp = width[cases[i][1]];
        for (int j = 0; j < cases[i][1] - cases[i][0]; ++j)
            if (width[cases[i][0] + j] < temp)
                temp = width[cases[i][0] + j];
        result.push_back(temp);
    }
    
    return result;
}

정말 개 쓰레기같은 문제인데 main 함수에 width라는 vector가 존재하지만 정작 serviceLane 함수의 매개변수로는 넘겨주지 않는다

 

따라서 직접 main 함수에서 넓이를 가지고 있는 vector를 찾아 함수 매개변수에 추가시켜줘야 한다

 

정말 쓰레기같다

 

문제 자체는 어렵지 않은데 width의 정보가 어디있는지 찾다가 시간을 어마어마하게 잡아먹는 엿먹이는 문제다

 

모든 케이스를 확인해야 되므로 cases.size()만큼 반복하며, cases의 각 인덱스에 있는 사잇값으로 width의 인덱스로 사용해 그 중 가장 작은 수를 찾아 result에 push_back 해준다

 

모든 cases가 끝나면 result를 return 한다