[Leetcode] 1029. Two City Scheduling

Algorithm|2021. 11. 12. 16:21
반응형

 

 

Two City Scheduling - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

다해봐도 모르겠어서 가능한 모든 경우의 수를 찾아서 최소값을 구하는 방법을 생각해봤는데

이는 O(n⁴) 까지 고려해야 한다.

 

Main Idea를 찾아본 결과

a와 b의 차이가 가장 큰 경우 작은 값을 이용하면 됐다.

은근 단순해서 화났음

/*
1. costs의 a와 b의 차이와 index를 2차원 배열에 저장
2. gap 값을 기준으로 오름차순 정렬
3. costs size까지 반복하며 순서대로 a,b costs size 절반을 넘지 않도록 더함 
*/


class Solution {
public:
    int twoCitySchedCost(vector<vector<int>>& costs) 
    {
        vector<vector<int>> gap_index;
        int a = 0;
        int b = 0;
        int ans = 0;
        for(int i=0; i<costs.size(); i++) //1과정
        {
            vector<int> v;
            v.push_back(abs(costs[i][0] - costs[i][1]));
            v.push_back(i);
            
            gap_index.push_back(v);           
        }
        
        sort(gap_index.begin(), gap_index.end(), greater<>()); //2과정
        
        
        for(int i=0; i<costs.size(); i++) //3과정
        {
            int idx = gap_index[i][1];
            
            if((costs[idx][0] < costs[idx][1] && a<costs.size()/2) || b>= costs.size()/2) 
            {
                ans += costs[idx][0];
                a++;
            }
            else if((costs[idx][0] >= costs[idx][1] && b<costs.size()/2) || a>= costs.size()/2) 
            {
                ans += costs[idx][1];
                b++;                
            } 
        }    
        
        return ans;
    }
};

실수..

a, b 차이를 내림차순으로 indexing 해야되는데 오름차순해버림 ㅋㅋ;

 

 

 

 

반응형

'Algorithm' 카테고리의 다른 글

[백준] 5822. 다이얼  (0) 2021.11.15
[백준] 8958. OX퀴즈  (0) 2021.11.15
[백준] 2799. 블라인드  (0) 2021.11.09
[백준] 4344. 평균은 넘겠지  (0) 2021.11.09
[Programmers] 스킬트리  (0) 2021.11.07

댓글()