-
이것이 코딩테스트다 - 6) 정렬알고리즘 2021. 1. 24. 18:17
6.1) 위에서 아래로
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool compare(int a, int b) { return a > b; } int main() { int n; cin >> n; vector <int> arr; for (int i = 0; i < n; i++) { int m; cin >> m; arr.push_back(m); } sort(arr.begin(), arr.end(), compare); for (int i = 0; i < n; i++) { cout << arr[i] << " "; } return 0; }
6.2)성적이 낮은 성적로 학생 출력하기
#include <iostream> #include <vector> #include <algorithm> #include <map> using namespace std; class Student { public: string name; int score; Student(string name, int score) { this->name = name; this->score = score; } //낮은점수부터 오름차순으로 설정(연산자 오버로딩) bool operator < (Student& other) { return this->score < other.score; } }; int n; vector <Student> v; int main() { cin >> n; for (int i = 0; i < n; i++) { string name; int score; cin >> name >> score; v.push_back(Student(name, score)); } sort(v.begin(), v.end()); for (int i = 0; i < n; i++) { cout << v[i].name << " "; } return 0; }
6.3)두 배열의 원소 교체
#include <iostream> #include <vector> #include <algorithm> using namespace std; int n, k; vector<int> A; vector<int> B; bool compare(int a, int b) { return a > b; } int main() { cin >> n >> k; for (int i = 0; i < n; i++) { int m; cin >> m; A.push_back(m); } for (int i = 0; i < n; i++) { int m; cin >> m; B.push_back(m); } //A는 오름차순, B는 내림차순으로 정렬 sort(A.begin(), A.end()); sort(B.begin(), B.end(), compare); for (int i = 0; i < k; i++) { if (A[i] < B[i]) swap(A[i], B[i]); else break; } //수의 합이 int의 범위를 넘어설 수 있으므로 sum은 long long 으로 지정한다. long long sum = 0; for (int i = 0; i < n; i++) { sum += A[i]; } cout << sum << endl; return 0; } /* 처음에 푼 방법(맞았다) using namespace std; int n, k,sum = 0; vector<int> A; vector<int> B; int main() { cin >> n >> k; for (int i = 0; i < n; i++) { int m; cin >> m; A.push_back(m); } for (int i = 0; i < n; i++) { int m; cin >> m; B.push_back(m); } while (k > 0) { sort(A.begin(), A.end()); sort(B.begin(), B.end()); int tmp; tmp = A[0]; A[0] = B[n - 1]; B[n - 1] = tmp; k--; } for (int i = 0; i < n; i++) { sum += A[i]; } cout << sum << endl; return 0; } */
'알고리즘' 카테고리의 다른 글
이것이 코딩테스트다 - 8) 다이나믹 프로그래밍(다시 풀어보기) (0) 2021.01.26 이것이 코딩테스트다 - 7) 이진탐색 (0) 2021.01.24 이것이 코딩테스트다 - 5) DFS/BFS (0) 2021.01.22 이것이 코딩테스트다 - 4) 구현 (0) 2021.01.21 이것이 코딩테스트다 - 3)그리디 (0) 2021.01.06