본문 바로가기
프로그래밍/LeetCode

C++ 1333. Filter Restaurants by Vegan-Friendly, Price and Distance(Leet Code)

by devsu 2020. 6. 24.

Leet Code_1333. Filter Restaurants by Vegan-Friendly, Price and Distance

Sort

 

https://leetcode.com/problems/filter-restaurants-by-vegan-friendly-price-and-distance/

 

문제 해석

 

이 문제를 풀기위해 이해해야 할 내용은 다음과 같습니다.

 

목표

주어진 조건을 만족하는 레스토랑들을 우선순위에 맞추어 정렬하여 구하기

방법

1. 주어진 조건을 만족하는 레스토랑들을 우선순위에 맞추어 정렬하여 구하기

 

결과

주어진 조건을 만족하는 레스토랑들을 우선순위에 맞추어 정렬하여 구하기

 

통과한 코드

class Solution {
public:
    vector<int> filterRestaurants(vector<vector<int>>& restaurants, int veganFriendly, int maxPrice, int maxDistance) {
        
        vector<vector<int>> res;
        
        int nRow = 0;
        for(int i = 0 ; i < restaurants.size() ; i++)
        {
            if(veganFriendly)
            {
                if(restaurants[i][2] == 0)
                    continue;
            }
            if(restaurants[i][3] > maxPrice)
                continue;
            if(restaurants[i][4] > maxDistance)
                continue;
            vector<int> data;
            data.push_back(restaurants[i][1]);
            data.push_back(restaurants[i][0]);
            res.push_back(data);
            
        }
        sort(res.begin(), res.end());
        vector<int> result(res.size(), 0);
        int a = 0;
        for(int i = res.size()-1 ; i >= 0 ; i--)
        {
            result[a++] = res[i][1];
        }
        return result;
    }
};

2차원 vector에 조건을 만족하는 레스토랑들을 넣는다(rating, id만)

오름차순으로 정렬한 후에 뒤에서 부터 출력한다.(rating이 같으면 높은 id 먼저 출력해야되기 때문에)

문제는 이해하면 머리로는 쉽게 풀 수 있지만 사용하는 자료구조와 함수들이 헷갈린 문제