https://www.welcomekakao.com/learn/courses/30/lessons/42889
stage k의 실패율은, 현재 stage k에 머물러 있는 사람/스테이지 k이상 시도한 사람
이라는 것을 이용했다. 두 배열을 만든 이후에, 부동 소수점 오차를 방지하기 위해서 나누는 연산은 하지 않고, 통분시 분자값을 비교해서 대소를 비교했다.
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 31 32 33 34 35 36 37 38 39 40 41 | #include <string> #include <vector> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; ll cnt[502], d[502]; struct Info { ll idx, son = 0, mom = 0; }info[502]; bool cmp(Info a, Info b) { if (a.son * b.mom > b.son * a.mom) return true; else if (a.son * b.mom == b.son * a.mom) { return a.idx < b.idx; } else return false; } vector<int> solution(int N, vector<int> stages) { vector<int> answer; for (int i = 0; i < stages.size(); i++) { cnt[stages[i]]++; for (int j = 1; j <= stages[i]; j++) { d[j]++; } } for (int i = 1; i <= N; i++) { info[i].idx = i; info[i].son = cnt[i]; info[i].mom = d[i]; } sort(info + 1, info + N+1, cmp); for (int i = 1; i <= N; i++) answer.push_back(info[i].idx); return answer; } | cs |
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
카카오 2018 블라인드 테스트: 무지의 먹방 라이브 C++ (0) | 2019.08.20 |
---|---|
카카오 2018 블라인드 테스트: 길 찾기 게임 C++ (0) | 2019.08.20 |
카카오 2018 블라인드 테스트: 오픈채팅방 C++ (0) | 2019.08.19 |
프로그래머스: 모의고사 (C++) (0) | 2019.07.09 |
프로그래머스: 완주하지 못한 선수 (C++) (0) | 2019.07.09 |