내일은 집 가는 날~~
문제
https://www.acmicpc.net/problem/2822
상근이 녀석.... 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있었다고 한다(훌륭한 녀석 ㅎㅎ).
이 문제를 보니까 pair를 이용하여 문제 순서를 삽입하면 될 것 같다. 입력받은 벡터를 정렬한 후 가장 큰 5개의 점수를 다 더하고, 더할 때 문제 순서는 다른 벡터에 저장해 둔다. 그리고 문제 순서를 저장한 벡터를 정렬하여 순서대로 출력해 주면 될 것 같다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector <pair<int, int>> quiz;
vector<int> num;
int k;
int main() {
for (int i = 1; i <= 8; i++) {
cin >> k;
quiz.push_back(make_pair(k, i));
}
sort(quiz.begin(), quiz.end());
int total = 0;
for (int i = 7; i > 2; i--) {
total += quiz[i].first;
num.push_back(quiz[i].second);
}
sort(num.begin(), num.end());
cout << total << "\n";
for (int i = 0; i < 5; i++) {
cout << num[i] << " ";
}
return 0;
}
ㅎㅎ 맞았다
다른 분의 풀이를 보니 class를 사용하여 문제의 점수와 번호를 함께 저장해주었다. 그리고 문제의 점수를 기준으로 내림차순 정렬을 하기 위해 함수를 따로 지정해 주고, 점수와 번호가 섞이지 않도록 stable_sort를 사용하였다.
#include <iostream>
#include <algorithm>
using namespace std;
class problem {
public :
int score; // 문제 점수
int num; // 문제 번호
};
// 문제의 점수를 기준으로 "내림차순" 정렬
bool cmp(problem a, problem b) {
return a.score > b.score;
}
int main() {
problem* p = new problem[8];
int sum = 0;
int arr[8]; // 문제번호를 복사해, 따로 정렬해주기 위한 배열
for (int i = 0; i < 8; i++) {
cin >> p[i].score;
p[i].num = i + 1;
}
// 안정정렬 (기존의 문제의 번호와 점수에 대한 순서가 바뀌지 X)
stable_sort(p, p + 8, cmp);
for (int i = 0; i < 5; i++) {
sum += p[i].score;
arr[i] = p[i].num;
}
// 문제의 번호만 순서대로 정렬
sort(arr, arr + 5);
cout << sum << "\n";
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
return 0;
}
출처: https://beginnerdeveloper-lit.tistory.com/93 [초보 개발자의 이야기, 릿허브:티스토리]
난 내림차순으로 하려고 greater를 사용했는데, 오류가 나서 그냥 오름차순으로 정렬해버렸다... ㅎㅎ
.... 그런데!!!!!
다른 풀이를 찾아보다가 greater로 내림차순 정렬을 한 코드를 발견하였다. 알고보니...
greater <pair <int, int>>()를 해줘야 하는데 난... greater <int, int>()라고 작성하였다 ㅎㅎ
이렇게 하나 얻어간다 ㅎㅎ
요즘 시간이 참 빨리 간다.
지나간 시간은 다시 돌아오지는 않지만, 가끔은 예전으로 돌아가고 싶어 진다.
그래도... 지금 이 시간도 후에 내가 그리워할 시간이라고 생각하고 지금을 열심히 살아가야겠다.
'백준 > C++' 카테고리의 다른 글
[C++] 백준 1337번 - 올바른 배열 (0) | 2024.03.01 |
---|---|
[C++] 백준 2470번 - 두 용액 (2) | 2024.03.01 |
[C++] 백준 5800번 성적 통계 (4) | 2023.12.26 |
[C++] 백준 14729번 칠무해 (2) | 2023.12.25 |
[C++] 백준 5576번 콘테스트 (2) | 2023.12.25 |