No Rules Rules

수 정렬하기 (feat. 백준, 2750번) 본문

생활/코테

수 정렬하기 (feat. 백준, 2750번)

개발하는 완두콩 2022. 8. 2. 12:13
728x90
반응형

수 정렬하기
https://www.acmicpc.net/problem/2750

 

2750번: 수 정렬하기

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

반응형
// woohyeon.kim
// https://www.acmicpc.net/problem/2750
#include <iostream>
using namespace std;
int buf[1000];
void merge_sort(register int* p, register int len) {
	if (len < 2)			return;
	register int i = 0, k = 0, mid = len / 2, j = mid;
	merge_sort(p, mid);
	merge_sort(p + mid, len - mid);
	while (i < mid && j < len) {
		if (p[i] < p[j])
			buf[k++] = p[i++];
		else
			buf[k++] = p[j++];
	}
	while(i < mid)
		buf[k++] = p[i++];
	while (j < len)
		buf[k++] = p[j++];
	for (register int i = 0; i < len; ++i)
		p[i] = buf[i];
}
int main() {
	ios::sync_with_stdio(false), cin.tie(NULL);
	register int N, arr[1000];
	cin >> N;
	for (register int i = 0; i < N; ++i)
		cin >> arr[i];
	merge_sort(arr, N);
	for (register int i = 0; i < N; ++i)
		cout << arr[i] << "\n";
	return 0;
}
// *&)*@*

stl의 sort가 아닌 병합 정렬을 이용하여 문제를 풀어보았습니다.

728x90
반응형
Comments