해결방법
처음에 map을 사용해서 문제를 풀어보려고 했는데 잘 되지 않아서 vector와 pair를 섞어서 사용하는 방식으로 선회했다.
문제를 보면 y좌표를 가지고 정렬을 하라는 것을 알 수 있다.
따라서 정렬 기준은
1. y좌표값을 비교를 하고,
2. 만약 y좌표값이 같다면 x좌표값을 비교한다.
가 된다.
정답 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int N, x, y;
cin >> N;
vector<pair<int, int>> dots;
for (int i = 0; i < N; i++)
{
cin >> x >> y;
dots.push_back({ x, y });
}
sort(dots.begin(), dots.end(), [](pair<int, int> a, pair<int, int> b)
{
if (a.second == b.second)
return a.first < b.first;
return a.second < b.second;
});
for (const auto& dot : dots)
{
cout << dot.first << " " << dot.second << "\n";
}
return 0;
}
'코딩테스트' 카테고리의 다른 글
BOJ - 나이순 정렬 10814 (0) | 2025.01.05 |
---|---|
BOJ - 최대공약수와 최소공배수 2609 (0) | 2025.01.05 |
BOJ - 욱제는 결정장애야!! 14646 (0) | 2025.01.04 |
BOJ - 수 찾기 1920 (0) | 2025.01.04 |
BOJ - 스택 10828 (0) | 2025.01.04 |