관리 메뉴

한다 공부

[C++] 백준 알고리즘 11651번 좌표 정렬하기 2 본문

Algorithm/문제풀이

[C++] 백준 알고리즘 11651번 좌표 정렬하기 2

사과당근 2021. 9. 9. 17:09

이 문제에서는 pair를 써봤다

x, y좌표를 pair에 담고

각 pair들을 vector에 담음

 

pair의 첫번째 원소 접근시에는 p.first,

두번째 원소는 p.second를 이용하면 된다

 

11651

#include<iostream>
#include<utility>
#include<vector>
#include<algorithm>

using namespace std;

bool cmp(pair<int, int> a, pair<int, int> b) {
	if (a.second != b.second)
		return a.second < b.second;
	else
		return a.first < b.first;
}

int main() {
	int n, temp;
	cin >> n;
	temp = n;

	vector<pair<int, int>> v;
	while (temp != 0) {
		int x, y;
		cin >> x >> y;
		v.push_back(make_pair(x, y));
		temp--;
	}

	sort(v.begin(), v.end(), cmp);

	int i;
	for (i = 0; i < n; i++) {
		cout << v[i].first << ' ' << v[i].second << '\n';
	}
}

여담으로, 시간초과가 떴었다.

구글링한 결과 cin cout이 시간을 많이 잡아먹어서,

printf를 이용하면 해결된다고하더라

 

그런데 코딩 멘토분께서

cin cout문제가 아니라 마지막 문장

endl;대신 \n;을 쓰면 해결된다 하셨다

 

정말로 시간초과가 사라짐!

endl;이 시간을 많이 잡아먹는다고 한다