728x90
반응형

17430번: 가로등
문제
https://www.acmicpc.net/problem/17430
17430번: 가로등
2차원 공간 위에 가로등이 N개 배치되어 있다. i번째 가로등의 위치는 (xi, yi)이고, 각 좌표는 정수이다. 서로 다른 가로등의 위치가 같은 경우는 없다. 두 가로등 i와 j(i < j)가 있을 때, (xi, yj)와 (xj
www.acmicpc.net
풀이
두 전봇대의 x좌표가 같은 경우, y좌표를 바꾸어도 반드시 균형 잡힐 수밖에 없다.
두 전봇대의 x좌표가 다른 경우, x좌표에 대한 y좌표의 집합이 같은 경우에만 균형 잡혀있다고 볼 수 있다.
따라서 집합 비교를 위해 map을 사용해 key를 x좌표로, value를 y좌표의 집합으로 사용했다. (벡터의 배열로 만들었어도 괜찮았을 것 같다.) 각 집합을 오름차순 정렬하여 비교에 용이하도록 했다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while (t--) {
int n, flag = 0;
cin >> n;
map<int, vector<int>> m;
for (int i = 0; i < n; i++) {
int x, y;
cin >> x >> y;
m[x].push_back(y);
}
for (auto &i : m)
sort(i.second.begin(), i.second.end());
for (auto i : m) {
if (flag)
break;
for (auto j : m) {
if (i.first == j.first)
continue;
if (i.second != j.second) {
flag = 1;
break;
}
}
}
cout << (flag ? "NOT BALANCED\n" : "BALANCED\n");
}
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 28702 FizzBuzz (0) | 2023.08.15 |
---|---|
[백준 / BOJ] C++ 28701 세제곱의 합 (0) | 2023.08.15 |
[백준 / BOJ] C++ 27965 N결수 (0) | 2023.08.12 |
[백준 / BOJ] C++ 23322 초콜릿 뺏어 먹기 (0) | 2023.08.11 |
[백준 / BOJ] C++ 17291 새끼치기 (8) | 2023.06.01 |