반응형
문제 출처
https://programmers.co.kr/learn/courses/30/lessons/42889
정답률 : 55.57%
sorting문제이다. 정렬을 활용하는 법을 확인하는 듯 하다. 역시 앞쪽이라 문제를 급하게 안읽고 차근차근 읽어나가면 쉽게 풀 수 있는 문제다.
전체사용자 수를 구하고 stages를 돌면서 몇명의 사용자가 도달했는지 카운트합니다. 다음으로 이 값과 stages를 참조하여 실패율을 계산하고 내림차순으로 정렬하면 되는 문제입니다.
소스코드
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 42 43 44 45 | #include <string> #include <vector> #include <algorithm> using namespace std; bool compare(pair<double, int> a, pair<double, int> b) { // 실패율이 같다면 스테이지 번호가 작은것! if(a.first == b.first) return a.second < b.second; // 실패율이 큰것이 앞! return a.first > b.first; } vector<int> solution(int N, vector<int> stages) { vector<int> answer; int users[501]={0}; int userSize = stages.size(); vector<pair<double, int>> failure; // 각각의 스테이지에 도달한 유저수 for(vector<int>::iterator it = stages.begin(); it!=stages.end(); it++) users[*it-1]++; for(int i=0; i<N; i++) { if(users[i] == 0) failure.push_back(make_pair(0, i+1)); else { failure.push_back(make_pair((double)users[i]/userSize, i+1)); userSize -= users[i]; } } sort(failure.begin(), failure.end(), compare); for(vector<pair<double, int>>::iterator it = failure.begin(); it!=failure.end(); it++) answer.push_back(it->second); return answer; } | cs |
반응형
'Algorithm' 카테고리의 다른 글
[BOJ 1987] 알파벳 (0) | 2019.01.05 |
---|---|
[카카오 2019] 코딩테스트 - 오픈채팅방 (0) | 2019.01.03 |
[프로그래머스 42842] 카펫 (2) | 2019.01.02 |
[프로그래머스 43162] 네트워크 (0) | 2019.01.01 |
[BOJ 6603] 로또 (0) | 2018.12.31 |