[백준] 1744번 수 묶기
·
백준 문제/그리디
문제: 1744번: 수 묶기  #include #include #include #include #include #include #include #include #include #include // setprecision을 사용하기 위한 헤더using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; priority_queue, greater> nums; for (int i = 0; i > tmp; nums.push(tmp); } int sum = 0; while (nums.size() >= 2) { bool flag = nums.size() % 2 == 0 ? tr..
[백준] 1774번 우주신과의 교감
·
백준 문제/MST
문제: 1774번: 우주신과의 교감  #include #include #include #include #include #include #include #include #include #include // setprecision을 사용하기 위한 헤더using namespace std;vector nodes; // 정점이 속한 집합 번호vector> coordinates; // 황선자와 우주신들의 좌표struct compare { bool operator()(pair, double> a, pair, double> b) { return a.second > b.second; }};// 각 정점이 속한 집합 번호 리턴int find_set(int u) { if (nodes[u] == u) return u; ..
[백준] 16562번 친구비
·
백준 문제/MST
문제: 16562번: 친구비  #include #include #include #include #include #include #include #include #include using namespace std;vector nodes; // 정점들// 우선 순위 큐가 pair 의 두 번째 요소를 기준으로 최소힙으로 동작할 수 있도록 하는 비교 함수 객체 만들기struct compare { bool operator()(pair, int> a, pair, int> b) { return a.second > b.second; }};// 각 정점이 속한 집합 번호를 반환하는 함수int find_set(int u) { if (nodes[u] == u) return u; return nodes[u] = find_..
[백준] 4386번 별자리 만들기
·
백준 문제/MST
문제: 4386번: 별자리 만들기  #include #include #include #include #include #include #include #include using namespace std;vector nodes;vector> coordinates; // 좌표값들(좌푤를 노드와 매핑하는데 이용할 것)// 두 번째 요소인 가중치를 기준으로 최소힙으로 동작하도록 하기 위한 사용자 정의 함수 객체struct compare { // 우선 순위 큐의 디폴트는 최대힙으로 동작 // 이를 최소힙으로 동작하도록 해주려면 a>b 이를 리턴해줘야함. // 근데 지금 두번째 요소를 기준으로 최소힙으로 만드니까 a.second > b.second 이렇게 한 것!! bool operator()(pair, float>..
[백준] 1197번 최소 스패닝 트리
·
백준 문제/MST
문제: 1197번: 최소 스패닝 트리  #include #include #include #include #include #include #include using namespace std;int compare(pair, int> a, pair, int> b) { return a.second node; // 그래프의 정점// 정점이 속한 집합의 번호 리턴// find_set 하면 타고 올라갈때마다 해당 node 의 값을 해당 집합 번호로 바꿔줄 것..// 다음에 또 접근할 때 아래에서 위까지 타고 올라가는 과정은 반복하지 않기 위함.int find_set(int u) { if (u == node[u]) return u; return node[u] = find_set(node[u]);}// 각 정점이 속..
[백준] 11000 강의실 배정
·
백준 문제/그리디
문제: 11000번: 강의실 배정  #include #include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; // 수업의 개수 cin >> n; vector> times; for (int i = 0; i > start >> end; pair tmp = make_pair(start, end); times.push_back(tmp); } // 시작 시점을 기준으로 정렬 sort(times.begin(), times.end()); // 최소힙으로 동작하도록.. priority_queue, g..
[백준] 10216번 Count Circle Groups
·
백준 문제/Disjoints Set
문제: 10216번: Count Circle Groups  #include #include #include #include #include #include #include using namespace std;struct circle { int x; // x 좌표 int y; // y 좌표 int r; // 통신 영역 거리};vector circles;vector circlesSet;// 해당 원이 속한 집합 번호를 반환하는 함수int find_set(int u) { if (circlesSet[u] == u) return u; return circlesSet[u] = find_set(circlesSet[u]);}// 두 개의 원 합치기void union_(int u, int v) { int ur = fi..
[백준] 20040번 사이클 게임
·
백준 문제/Disjoints Set
문제: 20040번: 사이클 게임  #include #include #include #include #include #include #include using namespace std;vector dots;vector sizes;int find_set(int u) { if (dots[u] == u) return u; return dots[u] = find_set(dots[u]);}bool union_(int u, int v) { int ur = find_set(u); int uv = find_set(v); // 다른 집합에 있으면 연결해줘야함 if (ur != uv) { if (sizes[ur] > n >> m; int cnt = 1; dots = vector(n); sizes = vector(n, ..
[백준] 4195번 친구 네트워크
·
백준 문제/Disjoints Set
문제: 4195번: 친구 네트워크  #include #include #include #include #include #include #include using namespace std;vector sizes;vector frendRelation;int find_set(int u) { if (u == frendRelation[u]) return u; else return frendRelation[u] = find_set(frendRelation[u]);}void union_(int u, int v) { int du = find_set(u); // u 가 속한 집합 번호 가져와 int dv = find_set(v); // v 가 속한 집합 번호 가져와 if (du != dv) { // du 가 더 큰 트..
[백준] 1946번 신입 사원
·
백준 문제/그리디
보호되어 있는 글입니다.