수학과의 좌충우돌 프로그래밍

[C++] BAEKJOON 2246 콘도 선정 본문

알고리즘/C++

[C++] BAEKJOON 2246 콘도 선정

ssung.k 2019. 10. 29. 22:03

https://www.acmicpc.net/problem/2246

 

2246번: 콘도 선정

문제 콘도를 선정할 때에는 가급적이면 싸고 바닷가에 가까운 곳으로 하려 한다. 이를 위해 우선 적당한 콘도 몇 곳을 후보로 선정하려 하는데, 다음 두 조건을 만족하는 콘도 X가 후보가 된다. X보다 바닷가에 더 가까운 콘도들은 모두 X보다 숙박비가 더 비싸다. X보다 숙박비가 더 싼 콘도들은 모두 X보다 바닷가에서 더 멀다. 각 콘도의 바닷가에서의 거리와 숙박비에 대한 정보가 주어졌을 때, 후보 콘도의 개수를 구해내는 프로그램을 작성하시오. 입력 첫째 줄

www.acmicpc.net

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(int argc, const char * argv[]) {

    int n;
    cin >> n;
    
    int count = 0;
    // 거리 , 숙박비
    vector<pair<int,int>> arr(n);
    
    
    
    for (int i=0;i<n;i++){
        cin >> arr[i].first >> arr[i].second;
    }

    for (int i=0;i<n;i++){
        int flag = 0;
        for (int j=0;j<n;j++){
            if (i!=j){
                // 가까우면서 숙박비가 싼 경우
                if (arr[i].first > arr[j].first && arr[i].second >= arr[j].second){
                    flag = 1;
                    break;
                }
                // 숙박비가 싸면서 가까운 경우
                if (arr[i].second > arr[j].second && arr[i].first >= arr[j].first){
                    flag = 1;
                    break;
                }
            }
        }
        if (!flag) count++;
    }
    
    cout << count << "\n";
    
    return 0;
}

 

Comments