인프런 커뮤니티 질문&답변

euijae.lee0714님의 프로필 이미지
euijae.lee0714

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

5-A

5-A 백준 순회공연 질문드립니다.

작성

·

136

0

#include <bits/stdc++.h>
using namespace std; 
typedef pair<int,int> pp; 
typedef map<int,int> m;
priority_queue<int, vector<int>,greater<int>> pq; 
void l(){ cout << "------- " << endl;}
int n; vector<pp> v; 

// day 정렬 
bool cSort(const pp &a, const pp &b){
    if(a.second != b.second){//sort by day 
        return a.first < b.first; 
    }
    return a.second > b.second; //sort by money 
}

//input 
void i(){
    cin >> n; 
    int d,p; 
    for(int i=0; i<n; i++){
        cin >> p;
        cin >> d; 
        v.push_back({d,p});
    }
    sort( v.begin(), v.end() ); 
}

//solution 
void s(){
    int money=0;
    for(pp dp : v){
        pq.push(dp.second);//price 
        if(pq.size() > dp.first) pq.pop();// pop 
    }
    while(!pq.empty()){
        money += pq.top(); pq.pop();         
    }
    cout << money;
}

void sol(){
    i();s(); 
}

int main() {
    sol(); 
    return 0;
}

 

 

위 코드에서 cSort를 써서 소팅 하게 되면 틀리는데 혹시 어떤 문제인지 여쭤봐도 될까요?

 

 sort( v.begin(), v.end() ); 

 

평범하게 소팅하면 통과가 되는데, cSort로 order by date, price로 정렬하면 에러가 터집니다.

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

   sort( v.begin(), v.end() ); 

이부분을 어떻게 바꾸면 에러가 뜬다는 말씀이시죠?

 

감사합니다.

넵. 안녕하세요 큰돌님. sort -> cSort 함수로 변경하면 에러가 뜨게 됩니다ㅠ

 

bool cSort(const pp &a, const pp &b){
    if(a.second != b.second){//sort by day 
        return a.first < b.first; 
    }
    return a.second > b.second; //sort by money 
}
euijae.lee0714님의 프로필 이미지
euijae.lee0714

작성한 질문수

질문하기