본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 2246 : 콘도 선정

반응형

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

 

2246번: 콘도 선정

첫째 줄에 콘도의 개수를 나타내는 자연수 N(1 ≤ N ≤ 10,000)이 주어진다. 다음 N개의 줄에는 각 콘도에 대한 정보를 나타내는 두 정수 D(1 ≤ D ≤ 10,000), C(1 ≤ C ≤ 10,000)가 주어진다. D는 그 콘도의

www.acmicpc.net

모든 경우의 수를 탐색하는 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

콘도의 개수 n, 정답 ans, 후보 가능 여부 can, xd, xc, d, c를 선언합니다.

📔 풀이과정

모든 경우의 수를 탐색하며 다음 조건인 경우에 후보지가 될수 없으므로 can을 0으로 만들고 loop를 탈출합니다.

1. 후보지보다 가까운데 가격도 싼 경우

2. 후보지보다 가격이 싼데 거리도 가까운 경우

📔 정답출력

ans를 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
using pii = pair<int,int>;

int n, ans, can, xd, xc, d, c;
vector <pii> v;

int main(){
  cin >> n;
  v.resize(n);
  for(int i = 0; i < n; i++) cin >> v[i].first >> v[i].second;

  for(int i = 0; i < n; i++){
    can = 1;
    xd = v[i].first;
    xc = v[i].second;
    for(int j = 0; j < n; j++){
      if(i == j) continue;
      d = v[j].first;
      c = v[j].second;
      if(xd >= d && xc >= c) { can = 0; break; }
      if(xc >= c && xd >= d) { can = 0; break; }
    }
    if(can) ans++;
  }

  cout << ans;
}