반응형
https://www.acmicpc.net/problem/5766
자료구조 (map, vector)를 사용해보는 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
n주의 m명의 상위 랭커들을 입력받기위해 n, m을 선언한 뒤 n * m만큼 입력받습니다. 입력하면서 playerScoreMap에 정보를 저장해줍니다. key는 플레이어 번호, value는 점수입니다.
📔 풀이과정
1. 저장된 playerScoreMap을 순회하며 1등의 점수를 first에 저장합니다. 2. first가 아닌 최댓값을 찾는다면 그것이 2등의 점수이므로 second에 저장합니다.
📔 정답출력
다시 순회하며 second와 점수가 같은 value가 있다면 출력해줍니다.
📕 Code
#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
int n, m;
int main(){
fastio;
while(1){
cin >> n >> m;
if(!n && !m) break;
vector <int> secondRankPlayer, ans;
map<int, int> playerScoreMap; //선수번호, 점수
int first = 0, second = 0;
for(int i = 0, x; i < n * m; i++){
cin >> x;
playerScoreMap[x]++;
}
for(auto el : playerScoreMap){
first = max(first, el.second);
}
for(auto el : playerScoreMap){
if(el.second == first) continue;
second = max(second, el.second);
}
for(auto el : playerScoreMap){
if(el.second == second) cout << el.first << ' ';
}
cout << '\n';
}
}
'Algorithm > 자료구조' 카테고리의 다른 글
(C++) - 백준(BOJ) 1380 : 귀걸이 (0) | 2022.02.12 |
---|---|
(C++) - 백준(BOJ) 1864 : 문어 숫자 (0) | 2021.11.20 |
(C++) - 백준(BOJ) 2075번 : N번째 큰 수 (0) | 2021.09.01 |
(C++) - 프로그래머스(위클리 챌린지) : 4주차 (0) | 2021.08.23 |
(C++) - 백준(BOJ) 2204번 : 도비의 난독증 테스트 (0) | 2021.08.22 |