처음에 입력값 생각 안 하고 이중 for문으로 풀었다가 시간초과가 났다ㅋㅋㅋ
100,000개가 input으로 들어오므로 NlogN까지 가능함
그래서 map을 써서 구현했다.
x축 또는 y축에 평행한 직선은 x점이 같거나 y점이 같으면 되므로 mapx, mapy 두 개를 만들어서 각 점을 지나는 직선이 있다면 개수를 셌다.
그다음에 map에 2 이상인 점의 개수를 세주었다. 끝!
map을 사용하다니 장하다....
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
int main() {
int n;
cin >> n;
map<int, int> mx;
map<int, int> my;
for (int i = 0; i < n; i++)
{
int x, y;
cin >> x >> y;
mx[x]++;
my[y]++;
}
int cnt = 0;
for (auto mi : mx)
{
//cout << mi.first << " " << mi.second << endl;
if (mi.second >= 2)
cnt++;
}
for (auto mi : my)
{
// cout << mi.first << " " << mi.second << endl;
if (mi.second >= 2)
cnt++;
}
cout << cnt << endl;
}
'백준' 카테고리의 다른 글
14442 벽 부수고 이동하기 2 (0) | 2020.09.25 |
---|---|
15739 매직스퀘어 (0) | 2020.09.25 |
5060 무글 맵스 [미완] (0) | 2020.09.25 |
2206 벽 부수고 이동하기 (0) | 2020.09.24 |
14699 관악산 등산 (0) | 2020.09.24 |