BOJ

(C++) BOJ/백준 2751 - 수 정렬하기 2

정영주 2021. 4. 4. 22:04

문제 출처 : BOJ 2751 - 수 정렬하기 2 www.acmicpc.net/problem/2751

 

 

<algorithm>의 sort() 라는 정렬 함수를 배우게 되어서 정렬 문제를 한번 풀어보았다.

수를 입력 받아서 오름차순으로 정렬하는 문제이다.

C언어에서 기본적으로 사용하던 swap() 함수를 이용한 정렬은 시간복잡도가 O(n^2)이어서 시간 초과가 떴었다.

 

최종 코드

#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 1000000

int arr[MAX];

int main() {
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) cin >> arr[i];
	sort(arr, arr + n);
	for (int i = 0; i < n; i++) cout << arr[i] << '\n';

	return 0;
}

arr[]이라는 int형 배열을 만들었다.

최대 크기가 너무 커서 main() 함수 밖에서 선언해주었다.

 

arr[] 배열에 n만큼 문자를 입력받고,

sort()함수를 이용해 안에 있는 원소를 오름차순으로 정렬해주었다. (세번째 parameter를 쓰지 않으면 기본적으로 오름차순으로 정렬된다.)

sort()함수를 이용한 정렬시간복잡도가 O(nlogn)이어서 원래 쓰던 정렬의 시간복잡도인 O(n^2)보다 훨씬 빨리 끝낼 수 있다.

오름차순으로 정렬된 arr[] 배열을 처음부터 출력하면 된다.

 

sort() 함수 하나만으로 이렇게 짧게 정렬 문제를 해결할 수 있다니.. 아주 좋은 함수인 것 같다.

'BOJ' 카테고리의 다른 글

(C++) BOJ/백준 5565 - 영수증  (0) 2021.04.06
(C++) BOJ/백준 11650 - 좌표 정렬하기  (0) 2021.04.05
(C++) BOJ/백준 10828 - 스택  (0) 2021.04.04
(C++) BOJ/백준 10814 - 나이순 정렬  (0) 2021.04.03
(C++) BOJ/백준 4358 - 생태학  (0) 2021.04.03