❓ 문제 ❓
위클리 챌린지 6주차
💯 풀이 방법 💯
일일이 구현하는 방법으로 문제를 풀었다.
복싱 선수들의 승률, 자신보다 무거운 사람 이긴 횟수, 무게, 아이디를 담을 구조체 배열을 생성해주었다. (꼭 승률로 해야된다!! -> 승리 횟수로만 카운트했는데 이러면 문제가 아예 달라짐!!) 구조체 배열을 생성하면 문제에 조건에 맞게 정렬해주면 된다.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
struct box{
double wins;
int w_wins, weight, num;
};
bool cmp(box a, box b){
if (a.wins > b.wins){
return true;
}
else if(a.wins == b.wins){
if(a.w_wins > b.w_wins)
return true;
else if (a.w_wins == b.w_wins){
if (a.weight > b.weight)
return true;
else if (a.weight == b.weight){
if (a.num < b.num)
return true;
}
}
}
return false;
}
vector<int> solution(vector<int> weights, vector<string> head2head) {
vector<int> answer;
vector<box> array;
for(int i = 0; i < head2head.size(); i++){
double wins = 0; int w_wins = 0;
double cnt = 0;
for(int j = 0; j < head2head[i].size(); j++){
if(head2head[i][j] == 'N') continue;
cnt++;
if(head2head[i][j] == 'W'){
wins++;
if(weights[i] < weights[j]){
w_wins++;
}
}
}
if(wins == 0)
array.push_back({wins, w_wins, weights[i], i+1});
else
array.push_back({wins, w_wins, weights[i], i+1});
}
sort(array.begin(), array.end(), cmp);
for(int i = 0; i < array.size(); i++){
answer.push_back(array[i].num);
}
return answer;
}