본문 바로가기
C++/백준 코딩테스트 풀이 C++

11650 C++ 좌표 정렬하기/ pair

by jjiing 2022. 8. 5.

 

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