초보 개발자의 이야기, 릿허브

[C++] 백준 11931번 수 정렬하기 4 본문

코딩테스트/📗 백준 (BOJ)

[C++] 백준 11931번 수 정렬하기 4

릿99 2022. 2. 25. 16:14
728x90
반응형
1. 문제이해

https://www.acmicpc.net/problem/11931

 

11931번: 수 정렬하기 4

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

www.acmicpc.net

 

N개의 정수가 주어질 때, 이를 내림차순으로 정렬하여 출력하는 것이 목표이다.

 

 

 

2. 문제풀이

 

앞서 풀이한 수 정렬하기 1, 2와 거의 동일한 문제이다.

(수 정렬하기 3의 경우에는 앞선 풀이방법대로 하면 시간초과가 발생했다.)

앞선 문제들과 다른 점이라면 입력받은 숫자들을 내림차순으로 정렬해야 한다는 점이다.

C++에서 지원하는 sort 함수의 기본형은 다음과 같다.

 

sort(a, a+N, compare);

 

여기서 첫 번째 인자인 a는 정렬을 시작하고자 하는 부분, 두번째 인자인 a+N은 정렬을 끝내고자 하는 부분.

마지막 인자인 compare는 정렬하는 조건을 포함하는 부분이다.

compare 부분은 생략가능하며, 디폴트 값은 "오름차순 정렬"이다.

따라서, 앞선 문제들에서 해당 부분을 생략해 오름차순으로 정렬해주었다면,

이번에는 compare부분에 내림차순으로 정렬하는 함수를 구현해 대입해주면 된다.

자세한 내용은 아래 코드를 참고하자.

 


 

비슷한 문제로는 2750번 수 정렬하기, 2751번 수 정렬하기 2 , 10989번 수 정렬하기 3이 있다.

해당 문제들에 대한 풀이와 소스코드는 아래 포스팅을 참고하자.

 

<2750번 수 정렬하기>

https://beginnerdeveloper-lit.tistory.com/105

 

[C++] 백준 2750번 수 정렬하기

1. 문제이해 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은..

beginnerdeveloper-lit.tistory.com

 

<2751번 수 정렬하기 2>

https://beginnerdeveloper-lit.tistory.com/106

 

[C++] 백준 2751번 수 정렬하기 2

1. 문제이해 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다..

beginnerdeveloper-lit.tistory.com

 

<10989번 수 정렬하기 3>
https://beginnerdeveloper-lit.tistory.com/107

 

[C++] 백준 10989번 수 정렬하기 3

1. 문제이해 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나..

beginnerdeveloper-lit.tistory.com

 

 

 

3. 소스코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

// 내림차순 정렬
bool DESC(int a, int b) {
	return a > b;
}

int main() {
	vector <int> v;
	int N;
	int element;

	cin >> N;
	for (int i = 0; i < N; i++) {
		cin >> element;
		v.push_back(element);
	}

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

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

	return 0;
}

sort함수의 compare 부분에 들어갈 내림차순 함수를 위와 같이 구현했다. (bool DESC)

메인 함수에서 N개의 정수를 입력받아 벡터에 저장한 뒤, 해당 값들을 sort 함수를 이용해 정렬, 출력해주었다.

 

 


 

문제에 대한 질문이나 지적은 언제나 감사하게 받고있습니다.😊

 

 

 

 

 

728x90
반응형