[백준] Baekjoon Online Judge
문제
평면에 n개의 점이 있다. 그중 두 개 이상의 점을 지나면서 x축 또는 y축에 평행한 직선이 몇 개인지 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다. 다음 n개의 줄에는 각 점의 좌표가 주어진다. 같은 좌표가 여러 번 주어질 수 있으며, 그런 경우 서로 다른 점으로 간주한다. 좌표는 절댓값이 231보다 작은 정수이다.
출력
첫째 줄에 답을 출력한다.
풀이
#include <iostream>
#include <unordered_map>
using namespace std;
unordered_map<int, int> x, y;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
while (n--) {
int a, b;
cin >> a >> b;
x[a]++;
y[b]++;
}
int cnt = 0;
for (const auto& pair : x)
cnt += (pair.second >= 2);
for (const auto& pair : y)
cnt += (pair.second >= 2);
cout << cnt << '\n';
return 0;
}
점의 좌표가 같더라도 2개 이상의 점이 있다면 직선 하나를 그릴 수 있다고 가정하고 문제를 풀어야 한다.
'백준 > C++' 카테고리의 다른 글
| [Baekjoon/C++] 1439번 - 뒤집기 (0) | 2025.10.14 |
|---|---|
| [Baekjoon/C++] 3054번 - 피터팬 프레임 (0) | 2025.10.12 |
| [Baekjoon/C++] 34543번 - 와우산 스탬프 투어 (0) | 2025.10.01 |
| [Baekjoon/C++] 16237번 - 이삿짐센터 (0) | 2025.09.25 |
| [Baekjoon/C++] 31216번 - 슈퍼 소수 (0) | 2025.09.23 |
