반응형
해당 문제는 연산자 오버로딩에 대한 개념만 있으면 쉽게 풀 수 있다.
int N;
vector<pair<int,int>> v;
void Intput()
{
cin >> N;
for (int i = 0; i < N; i++)
{
int x, y;
cin >> x >> y;
v.push_back({ x,y });
}
}
입력은 x,y를 받아준다. 순서는 y 오름차순을 기준으로하고 y가 같다면 x값을 비교한 뒤 오름차순 한다.
bool operatorVector (const pair<int, int>& a, const pair<int, int>& b)
{
if (a.second == b.second)
{
return a.first < b.first;
}
return a.second < b.second;
}
정렬 조건으로 만들어줄 비교 함수 하나를 만들어주었다.
void Solution()
{
sort(v.begin(), v.end(), operatorVector);
for (int i = 0; i < v.size(); i++)
{
cout << v[i].first << " " << v[i].second << '\n';
}
}
std 정렬 함수를 통해 정렬하고 비교 연산자를 아까 만들어준 함수를 통해 넣어준다.
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <cmath>
#include <string>
#include <queue>
#include <stack>
using namespace std;
int N;
vector<pair<int,int>> v;
void Intput()
{
cin >> N;
for (int i = 0; i < N; i++)
{
int x, y;
cin >> x >> y;
v.push_back({ x,y });
}
}
bool operatorVector (const pair<int, int>& a, const pair<int, int>& b)
{
if (a.second == b.second)
{
return a.first < b.first;
}
return a.second < b.second;
}
void Solution()
{
sort(v.begin(), v.end(), operatorVector);
for (int i = 0; i < v.size(); i++)
{
cout << v[i].first << " " << v[i].second << '\n';
}
}
void Solved() {
Intput();
Solution();
}
int main() {
Solved();
}

반응형
'프로그래밍-기본기 > 알고리즘(문제풀이)' 카테고리의 다른 글
| [leetcode] 3. Longest Substring Without Repeating Characters (0) | 2024.03.27 |
|---|---|
| [LeetCode] 14. Longest Common Prefix (0) | 2024.03.27 |
| (백준)10773 제로 c++ (0) | 2023.09.25 |
| (백준) 2839 설탕 배달 c++ 그리디 알고리즘 (0) | 2023.09.19 |
| (백준) 2775 부녀회장이 될테야 C++ (0) | 2023.09.18 |