Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- ICPC Sinchon
- 신촌연합
- 스레드
- 1260 c++
- ALGOS
- GDSC Sookmyung
- 2024 하반기
- formatTime
- 프로그래머스
- SMUPC
- Dart 문법
- C++
- swift
- DART
- CodeForces
- ZeroZone
- Solution Challenge
- audioPlayer
- 숙명여자대학교
- 운영체제
- 백준
- People's Choice Award
- 플러터
- 프로세스
- 알고리즘
- BOJ1260
- Flutter
- dalgona
- 운영진
Archives
- Today
- Total
Whaeun Story
[BOJ 24509] 상품의 주인은? 풀이 본문
친구가 이번 신촌 연합 겨울 알고리즘 캠프 대회의 문제를 출제했다고 연락이 와 문제를 풀어 보게 되었다. (의리의리 👻) 사실은 브론즈 문제 맛보라고 연락이 왔는데 실상은 실버5로 책정된........
그렇게 풀게 된 문제의 지문을 읽어보니 정렬 문제여서 과목별로 벡터를 만들어서 정렬하게 되었다. 또한, 한 사람이 상품을 또 타갈 수 없다고 했으므로 학생 벡터를 만들어 해당 번호의 학생이 상품을 타갔는지 여부를 확인할 수 있도록 체크했다. cmp 함수를 직접 만들어서 사용했는데 학생의 번호가 더 작고 점수는 더 큰 사람이 앞에 와야 하므로 pair에서 second는 더 큰 것이 앞으로 first는 더 작은 것이 앞에 위치할 수 있도록 코드를 작성했다.
계속 출제진으로 참여하던 대회에서 나온 문제들을 따로 풀어보니 감회가 새로웠던 것 같다. 이번에는 개인 사정으로 출제진에 지원하지 못했지만 다음 여름 캠프 때 기회가 된다면 출제진으로 다시 활동해 보고 싶다. 새로운 출제진 기준을 그 전에 맞출 수 있을...까..? 아자아자
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int>student;
vector<pair<int, int>>korea;
vector<pair<int, int>>english;
vector<pair<int, int>>math;
vector<pair<int, int>>science;
bool cmp(const pair<int, int> & a, const pair<int, int> & b) {
if (a.second == b.second) {
return a.first < b.first;
}
return a.second > b.second;
}
int main(){
int n;
cin >> n;
for(int i = 0; i< n; i++){
student.push_back(0);
}
for (int i = 0; i < n; i++){
int st, k, e, m, s;
cin >> st >> k >> e >> m >> s;
korea.push_back({st, k});
english.push_back({st, e});
math.push_back({st, m});
science.push_back({st, s});
}
sort(korea.begin(), korea.end(), cmp);
sort(english.begin(), english.end(), cmp);
sort(math.begin(), math.end(), cmp);
sort(science.begin(), science.end(), cmp);
cout << korea[0].first << " ";
student[korea[0].first - 1] = 1;
int english_best = 0;
for (; english_best < n; english_best++){
if(student[english[english_best].first - 1] == 0){
break;
}
}
cout << english[english_best].first << " ";
student[english[english_best].first - 1] = 1;
int math_best = 0;
for (; math_best < n; math_best++){
if(student[math[math_best].first - 1] == 0){
break;
}
}
cout << math[math_best].first << " ";
student[math[math_best].first - 1] = 1;
int sc_best = 0;
for (; sc_best < n; sc_best++){
if(student[science[sc_best].first - 1] == 0){
break;
}
}
cout << science[sc_best].first << " ";
}
'알고리즘 > BOJ풀이' 카테고리의 다른 글
[ BOJ 1260 ] DFS와 BFS 풀이 (0) | 2023.04.08 |
---|---|
[BOJ 1865] 웜홀 풀이 (0) | 2022.10.30 |