티스토리 뷰

코딩 테스트/백준

백준 11650 c++

상어악어 2022. 1. 23. 23:23
반응형

 

 

벡터로 구현한 것

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


using namespace std;


int main() {
	ios_base::sync_with_stdio(false);
	int n;
	int X, Y;
	vector<pair<int, int>> v;
	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> X >> Y;
		v.push_back({ X,Y });

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

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




	return 0;
}

 

 

 

merge sort를 이용한 것

#include <iostream>

#define SIZE 100001

int arr[SIZE][2];
int result[SIZE][2];


void MergeSort(int, int);
void Merge(int, int);

using namespace std;


int main() {

	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i][0]>>arr[i][1];
	}

	MergeSort(0, n - 1);


	for (int i = 0; i < n; i++) {
		for (int j = 0; j < 2; j++) {
			cout << arr[i][j] << " ";
		}
		cout << "\n";
	}

	return 0;
}


void MergeSort(int start, int end) {
	if (start < end) {
		int mid = (start + end) / 2;
		MergeSort(start, mid);
		MergeSort(mid + 1, end);
		Merge(start, end);
	}
}

void Merge(int start, int end) {
	int mid = (start + end) / 2;

	int i = start, j = mid + 1, k = start, l = 0;

	while (i <= mid && j <= end) {
		l = 0;
		if (arr[i][l] < arr[j][l]) {
			result[k][l] = arr[i][l];
			l++;
			result[k][l] = arr[i][l];
			k++;
			i++;
		}
		else if (arr[i][l] == arr[j][l]) {		//x좌표가 같을때
			if (arr[i][l + 1] <= arr[j][l + 1]) {
				result[k][l] = arr[i][l];
				l++;
				result[k][l] = arr[i][l];
				k++;
				i++;
			}
			else {
				result[k][l] = arr[j][l];
				l++;
				result[k][l] = arr[j][l];
				k++;
				j++;
			}
		}
		else
		{
			result[k][l] = arr[j][l];
			l++;
			result[k][l] = arr[j][l];
			k++;
			j++;
		}
	}

	while (i <= mid) {
		l = 0;
		result[k][l] = arr[i][l];
		l++;
		result[k][l] = arr[i][l];
		i++;
		k++;
	}
	while (j <= end) {
		l = 0;
		result[k][l] = arr[j][l];
		l++;
		result[k][l] = arr[j][l];
		j++;
		k++;
	}

	for (int i = start; i <= end; i++) {
		for (int l = 0; l < 2; l++) {
			arr[i][l] = result[i][l];
		}
	}
}

배열을 2차원배열(열 2개)로 생성해 x,y좌표를 받고

x좌표가 같을때 y좌표끼리 비교해

더 작은값을 앞으로 이동시켜주었다

 

반응형

'코딩 테스트 > 백준' 카테고리의 다른 글

백준 6588 c++ 골드바흐의 추측  (0) 2022.02.16
퀵 정렬(Quick Sort)  (0) 2022.01.23
백준 10989 counting sort c++  (0) 2022.01.19
백준 2751번 merge sort c++  (0) 2022.01.18
백준 1018 c++  (0) 2022.01.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함