오답노트
프로그래머스 - 1단계 - 실패율 본문
https://programmers.co.kr/learn/courses/30/lessons/42889?language=cpp
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
- 문제파악
총 스테이지 수 N과 플레이어들이 현재 도전중인 스테이지를 넣은 배열이 주어진다. 실패율을 구해야하는 실패율은
현재 도전중인 플레이어의 수 / 클리어한 플레이어의 수이다. 이 때 실패율이 높은 순서대로 정렬한 배열을 출력하라. 실패율이 같을 경우 스테이지 순서가 빠른 순으로 출력하라.
- 정답
멍청하게도 double을 계산할 때 형변환을 명시적으로 안해줘서 혼란스러웠다.
#include "bits/stdc++.h"
using namespace std;
int arr_clear[502];
int arr_not_clear[502];
bool cmp(pair<double,int> a,pair<double,int> b)
{
if(a.first < b.first)
return false;
else if (a.first > b.first)
return true;
else
{
if(a.second < b.second)
return true;
else if (a.second > b.second)
return false;
}
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<double,int>> vec;
for(auto a : stages)
{
for(int i = 1 ; i <= a ; i++)
arr_clear[i]++;
arr_not_clear[a]++;
}
for(int i = 1 ; i <= N ; i++)
{
double tmp = 0;
if(arr_clear[i])
tmp = (double)arr_not_clear[i] / (double)arr_clear[i];
vec.push_back({tmp,i});
}
sort(vec.begin(),vec.end(),cmp);
for(auto a : vec)
answer.push_back(a.second);
return answer;
}
'C,C++ > 코딩테스트' 카테고리의 다른 글
프로그래머스 - 1단계 - 완전탐색 (0) | 2022.05.30 |
---|---|
프로그래머스 1단계 - 폰켓몬 (0) | 2022.05.29 |
프로그래머스 1단계 - 약수의 개수와 덧셈 (0) | 2022.05.29 |
프로그래머스 - 1단계 - 3진법 뒤집기 (0) | 2022.05.29 |
프로그래머스 - 1단계 - 예산 (0) | 2022.05.28 |