728x90
์นด์นด์ค ๋ฌธ์ ๋ก vector๊ฐ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ ๊ฑฐ์ ์ด์ค for๋ฌธ์ผ๋ก ์์ํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ๋ง์ ๊ฒ ๊ฐ๋ค. ์ค๋๋ง์ ์ฃผ์์ ๋จผ์ ๋ฌ๊ณ ์ฝ๋๋ฅผ ์งฐ๋๋ฐ ์๊ฐ๋ณด๋ค ์ ์ง์ก๋ค. Map์ ํ์ฉํด์ value์ ๋ํด ์ค๋ฆ์ฐจ์/๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ ๋ฒ์ ์ฒดํํ ๊ฒ ๊ฐ๋ค.
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
bool cmp(const pair<int, double>& a, const pair<int, double>& b) {
// value๊ฐ ๊ฐ๋ค๋ฉด key์ ํด๋นํ๋ ๊ฒ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
if(a.second == b.second) return a.first < b.first;
// value์ ๋ํด ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
else return a.second > b.second;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
map<int, double> fail_ratio;
int challenger = stages.size();
int failer = 0;
for(int j = 1 ; j <= N ; j++) {
for(int i = 1 ; i <= stages.size() ;i++) {
// ํด๋น stage๋ฅผ ๋ง๋๋ฉด ๋ช ๋ช
์ด ๋์ ์ ํ๊ณ ๋ช ๋ช
์ด ์คํจํ๋์ง ์ฒดํฌํ๋ค.
if(stages[i-1] == j)
failer++;
}
// ๋ชจ๋ ๋์ ์๊ฐ stage๊ฐ ๋๋๊ธฐ ์ ์ ์์ด์ง๋ ๊ฒฝ์ฐ 0์ผ๋ก ๋๋ ์ ์์ผ๋ฏ๋ก
if(challenger == 0)
fail_ratio[j] = 0;
else
// map ๋ณ์์ key๋ stage, value๋ ์คํจ์จ์ ๋ด์์ค๋ค.
fail_ratio[j] = (double) failer / (double) challenger;
challenger -= failer;
failer = 0;
}
// map์ value์ ํด๋นํ๋ ๊ฒ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ
vector<pair<int,double>> temp (fail_ratio.begin(), fail_ratio.end());
sort(temp.begin(), temp.end(), cmp);
for(auto cnt : temp){
cout << cnt.first << " " << cnt.second << endl;
answer.push_back(cnt.first);
}
return answer;
}
'๐ Self Study > ๐ Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค (๊ธฐ๋ฅ ๊ฐ๋ฐ, ์คํ/ํ) C++ (0) | 2022.01.03 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค (124 ๋๋ผ, ์ฐ์ต๋ฌธ์ ) C++ (0) | 2022.01.03 |
ํ๋ก๊ทธ๋๋จธ์ค (๋ฉ์ฉกํ ์ฌ๊ฐํ, Summer/Winter Coding(2019)) C++ (0) | 2022.01.03 |
ํ๋ก๊ทธ๋๋จธ์ค (ํฌ์ผ๋ชฌ, ์ฐพ์๋ผ ํ๋ก๊ทธ๋๋ฐ ๋ง์คํฐ) C++ (0) | 2022.01.02 |
ํ๋ก๊ทธ๋๋จธ์ค (๋จ์ฒด์ฌ์ง ์ฐ๊ธฐ, 2017 ์นด์นด์ค๋ณธ์ ์ฝ๋) C++ (0) | 2022.01.02 |