반응형
https://www.acmicpc.net/problem/2535
2535번: 아시아 정보올림피아드
첫 번째 줄에는 대회참가 학생 수를 나타내는 N이 주어진다. 단, 3 ≤ N ≤ 100이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 학생의 소속 국가 번호, 학생 번호, 그리고 성적이 하나의 빈칸을 사
www.acmicpc.net
정렬, 구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 대회참가 학생 수 n, 나라별 메달 수상여부를 결정할 변수 cnt, 모두 수여되었는지 여부를 결정할 allGived, 정보를 저장할 vector형 변수 info를 선언하고 n에 입력을 받습니다.2. n만큼 for loop를 수행합니다.국가번호, 학생번호, 점수를 의미하는 변수를 선언해 입력받습니다. info에 자료를 저장하며 cnt에 각 국가번호의 메달 수여여부 값을 2로 초기화해 줍니다.3. info의 자료를 국가 점수에 대해 정렬해줍니다.
📔 풀이과정
for loop를 수행합니다.
메달이 모두 수여되었다면 loop를 탈출해줍니다.
각 국가의 cnt가 아직 양수라면 메달을 수여해 주며 정답을 출력합니다.
📔 정답출력
형식에 맞게 출력합니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int n, cnt[101], allGived = 3;
vector<vector<int>> v;
bool cmp(vector<int> &a, vector<int> &b){
return a[2] > b[2];
}
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
int countryNum, studentNum, score;
cin >> countryNum >> studentNum >> score;
v.push_back({countryNum, studentNum, score});
cnt[i] = 2;
}
sort(v.begin(), v.end(), cmp);
for(auto e : v) {
if(!allGived) break;
if(cnt[e[0]] > 0){
cout << e[0] << ' ' << e[1] << '\n';
cnt[e[0]]--, allGived--;
}
}
}
'Algorithm > Implementation' 카테고리의 다른 글
(Python) - 백준(BOJ) 4150 : 피보나치 수 (0) | 2022.03.17 |
---|---|
(Python) - 백준(BOJ) 2729 : 이진수 덧셈 (0) | 2022.03.16 |
(C++) - 백준(BOJ) 1331 : 나이트 투어 (0) | 2022.03.12 |
(C++) - 백준(BOJ) 24356 : ЧАСОВНИК (2) | 2022.03.08 |
(Python) - 백준(BOJ) 10834 : 벨트 (0) | 2022.03.06 |