문제

 

 

풀이

입력 받을 배열 v1, 입력 받은 배열을 정렬하고 중복을 제거한 배열 v2를 만들고 v[i]가 v[2]의 몇 번째에 있는지 출력하면 된다.

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

using namespace std;

int main() {
	int n;
	vector<int> v1, v2;

	cin >> n;

	for (int i = 0; i < n; i++) {
		int num;

		cin >> num;
		v1.push_back(num);
	}

	v2 = v1;

	sort(v2.begin(), v2.end());
	v2.erase(unique(v2.begin(), v2.end()), v2.end());

	for (int i = 0; i < v1.size(); i++) {
		auto idx = lower_bound(v2.begin(), v2.end(), v1[i]);

		cout << idx - v2.begin() << " ";
	}
	
	return 0;
}

'백준 > 정렬' 카테고리의 다른 글

10814번: 나이순 정렬 [C++]  (0) 2023.03.27
11651번 좌표 정렬하기 2 [C++]  (0) 2023.03.27
11650번: 좌표 정렬하기 [C++]  (0) 2023.03.27
1427번: 소트인사이드 [C++]  (0) 2023.03.27
2108번: 통계학 [C++]  (0) 2023.03.27

문제 

 

 

풀이

나이와 이름은 가입한 순서대로 주어지므로 pair<int, string>으로 나이와 이름을 매칭시켜준 후, 나이만 비교해서 정렬하면 된다.

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

using namespace std;

bool cmp(pair<int, string> a, pair<int, string> b) {
	return a.first < b.first;
}

int main() {
	int n, age;
	string name;
	vector<pair<int, string>> v;

	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> age >> name;

		v.push_back(make_pair(age, name));
	}

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

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

	return 0;
}

'백준 > 정렬' 카테고리의 다른 글

18870번: 좌표 압축 [C++]  (0) 2023.03.27
11651번 좌표 정렬하기 2 [C++]  (0) 2023.03.27
11650번: 좌표 정렬하기 [C++]  (0) 2023.03.27
1427번: 소트인사이드 [C++]  (0) 2023.03.27
2108번: 통계학 [C++]  (0) 2023.03.27

문제

 

 

풀이

11650의 비교자에서 비교하는 순서를 바꾸었다.

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

using namespace std;

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

int main() {
	int n, x, y;
	vector<pair<int, int>> v;

	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> x >> y;

		v.push_back(make_pair(x, y));
	}

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

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

	return 0;
}

'백준 > 정렬' 카테고리의 다른 글

18870번: 좌표 압축 [C++]  (0) 2023.03.27
10814번: 나이순 정렬 [C++]  (0) 2023.03.27
11650번: 좌표 정렬하기 [C++]  (0) 2023.03.27
1427번: 소트인사이드 [C++]  (0) 2023.03.27
2108번: 통계학 [C++]  (0) 2023.03.27

문제

 

 

풀이

좌표 (x, y)를 pair<int, int> 형으로 받아 x좌표가 같으면 y좌표를 비교하고 아니라면 x좌표를 비교하는 비교자를 만들어 정렬하였다.

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

using namespace std;

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

int main() {	
	int n;
	vector<pair<int, int>> v;

	cin >> n;

	for (int i = 0; i < n; i++) {
		int x, y;

		cin >> x >> y;

		v.push_back(make_pair(x, y));
	}

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

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

	return 0;
}

'백준 > 정렬' 카테고리의 다른 글

10814번: 나이순 정렬 [C++]  (0) 2023.03.27
11651번 좌표 정렬하기 2 [C++]  (0) 2023.03.27
1427번: 소트인사이드 [C++]  (0) 2023.03.27
2108번: 통계학 [C++]  (0) 2023.03.27
10989번: 수 정렬하기 3 [C++]  (0) 2023.03.27

문제

 

 

풀이

문자열을 받아 각 자릿수를 비교해서 정렬하면 된다.

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main() {
	string str;
	
	cin >> str;

	sort(str.begin(), str.end(), greater<char>());

	cout << str;

	return 0;
}

 

'백준 > 정렬' 카테고리의 다른 글

11651번 좌표 정렬하기 2 [C++]  (0) 2023.03.27
11650번: 좌표 정렬하기 [C++]  (0) 2023.03.27
2108번: 통계학 [C++]  (0) 2023.03.27
10989번: 수 정렬하기 3 [C++]  (0) 2023.03.27
2751번: 수 정렬하기 2 [C++]  (0) 2023.03.27

문제

 

 

풀이

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

using namespace std;

int main() {
	int n, num;
	int sum = 0, modeMax = 0, mode = 0, min = 4000, max = -4000;
	vector<int> v1;
	vector<int> v2(8001, 0);
	bool flag = false;

	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> num;

		if (num < min) min = num;
		if (num > max) max = num;
		v2[num + 4000]++;
		if (v2[num + 4000] > modeMax) modeMax = v2[num + 4000];

		sum += num;
		v1.push_back(num);
	}

	sort(v1.begin(), v1.end());

	for (int i = 0; i < v2.size(); i++) {
		if (v2[i] == modeMax) {
			mode = i;

			if (flag == true) break;
			flag = true;
		}
	}

	cout << (int)round((float)sum / n) << "\n" << v1[round(n / 2)] << "\n" << mode - 4000 << "\n" << max - min << "\n";

	return 0;
}

'백준 > 정렬' 카테고리의 다른 글

11650번: 좌표 정렬하기 [C++]  (0) 2023.03.27
1427번: 소트인사이드 [C++]  (0) 2023.03.27
10989번: 수 정렬하기 3 [C++]  (0) 2023.03.27
2751번: 수 정렬하기 2 [C++]  (0) 2023.03.27
25305번: 커트라인 [C++]  (0) 2023.03.27

문제

 

 

풀이

#include <iostream>

using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int n;
	int arr[10001] = { 0 };

	cin >> n;

	for (int i = 0; i < n; i++) {
		int num;

		cin >> num;

		arr[num]++;
	}

	for (int i = 1; i < 10001; i++)
		for (int j = 0; j < arr[i]; j++)
			cout << i << "\n";

	return 0;
}

 

'백준 > 정렬' 카테고리의 다른 글

1427번: 소트인사이드 [C++]  (0) 2023.03.27
2108번: 통계학 [C++]  (0) 2023.03.27
2751번: 수 정렬하기 2 [C++]  (0) 2023.03.27
25305번: 커트라인 [C++]  (0) 2023.03.27
2587번: 대표값2 [C++]  (0) 2023.03.27

문제

 

 

풀이

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

using namespace std;

bool check[2000001] = { false };

int main() {	
	int n, num;
	vector<int> v;

	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> num;

		if (!check[num + 1000000]) {
			check[num + 1000000] = true;
			v.push_back(num);
		}
	}

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

	for (int i = 0; i < v.size(); i++)
		cout << v[i] << "\n";

	return 0;
}

'백준 > 정렬' 카테고리의 다른 글

2108번: 통계학 [C++]  (0) 2023.03.27
10989번: 수 정렬하기 3 [C++]  (0) 2023.03.27
25305번: 커트라인 [C++]  (0) 2023.03.27
2587번: 대표값2 [C++]  (0) 2023.03.27
2750번: 수 정렬하기 [C++]  (0) 2023.03.27

+ Recent posts