728x90
관련 사이트: https://www.acmicpc.net/problem/11651
"11650번: 좌표 정렬하기" 문제에서 조건만 조금 변경된 문제이다.
비교 기준이 y 이므로, pair.first 가 아닌 pair.second 기준으로 비교가 수행될 수 있도록 하였다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<int, int> prev, pair<int, int> next)
{
if (prev.second == next.second)
return prev.first < next.first;
else
return prev.second < next.second;
}
int main()
{
int N, x, y;
vector<pair<int, int>> xy;
cin >> N;
while (N > 0)
{
cin >> x >> y;
xy.push_back(pair<int, int>(x, y));
N--;
}
sort(xy.begin(), xy.end(), compare);
for (pair<int, int> p : xy)
cout << p.first << " " << p.second << "\n";
return 0;
}
- 메모리: 3572 KB
- 시간: 116 ms
- 코드 길이: 595 B
추가적으로 아래의 두 줄을 추가해주면 C와 C++ 버퍼가 분리되므로 속도를 더 줄여줄 수 있다.
ios_base::sync_with_stdio(false);
cin.tie(NULL);
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<int, int> prev, pair<int, int> next)
{
if (prev.second == next.second)
return prev.first < next.first;
return prev.second < next.second;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N, x, y;
vector<pair<int, int>> xy;
cin >> N;
while (N > 0)
{
cin >> x >> y;
xy.push_back(pair<int, int>(x, y));
N--;
}
sort(xy.begin(), xy.end(), compare);
for (pair<int, int> p : xy)
cout << p.first << " " << p.second << "\n";
return 0;
}
- 메모리: 3688 KB
- 시간: 48 ms
- 코드 길이: 644 B
* 연관 문제
- 11650번: 좌표 정렬하기
728x90
'Algorithm > BackJoon' 카테고리의 다른 글
10989번: 수 정렬하기 3 (0) | 2023.06.06 |
---|---|
2751번: 수 정렬하기 2 (0) | 2023.06.06 |
11650번: 좌표 정렬하기 (0) | 2023.06.05 |
9935번: 문자열 폭발 (0) | 2023.06.04 |
2750번: 수 정렬하기 (0) | 2023.06.04 |
댓글