pair<자료형, 자료형>을 통해서 두 개의 숫자를 쌍으로 저장할 수 있고, .first와 .second를 통해 각각 인자에 접근 할 수 있다.
이 pair들을 벡터로 저장할 수가 있어서
선언 : vector<pair<int,int>> vec;
자료 값 입력 : vec.push_back(pair<int, int> (값1, 값2));
그리고 vector를 정렬해주는 sort함수를 이용해 값을 비교할 수 있는데,
pair의 경우 자동으로 첫번째 인자를 비교해주고, 값이 같다면 두번째 인자를 비교해준다.
따라서 그냥 sort에 벡터를 넣고 돌리면 자동으로 문제에서 요구하는 오름차순으로 정렬해준다.
(직접 bool형 함수 compare를 사용해 줄 수도 있다. 문제에서 더 복잡한 정렬이 요구되는 경우를 대비해서.
아래 코드에는 주석처리 해놓은 부분이다.)
시간초과
cout으로 하면 시간초과가 발생한다.
printf로 바꿔주니 해결됐다.
(printf 가 cout보다 훨씬 빠르다)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//bool comp(pair<int, int> a, pair<int, int> b)
//{
// return a < b;
//}
int main()
{
int N;
cin >> N;
vector<pair<int, int>> pairN;
//입력
for (int i = 0; i < N; i++)
{
int x, y;
cin >> x >> y;
pairN.push_back(pair<int, int>(x, y));
}
//sort(pairN.begin(), pairN.end(), comp); //아래와 같은 결과
sort(pairN.begin(), pairN.end());
for (int i = 0; i < N; i++)
{
printf("%d %d\n", pairN[i].first , pairN[i].second);
}
}
'C++ > 백준 코딩테스트 풀이 C++' 카테고리의 다른 글
10816 C++ 숫자카드2 (0) | 2022.08.12 |
---|---|
2751 수 정렬하기 C++ (1) | 2022.07.29 |
C++ 7568 덩치 (0) | 2022.07.22 |
C++ 1436 영화감독 숌 (0) | 2022.07.15 |
C++ 2884 알람시계 (0) | 2022.07.06 |