250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++ KAKAO)실패율 본문
728x90
반응형
우선 실패율을 저장하기 위해 double형 벡터 rate를 선언하였다.
이중 for문을 이용..!
스테이지를 나타내는 i,
stages의 인덱스를 나타내는 j 이다.
user는 해당 스테이지를 클리어한 사람의 수를 나타내고,
count는 i번째 스테이지에서 실패한 사람의 수를 나타낸다.
만약 count가 0이면 해당 스테이지에 도달한 유저가 없다는 뜻으로 0을 rate에 넣어주고,
count가 0이 아니면 count / user 의 결과값을 rate에 넣어준다.
그리고 user -= count를 통해 유저의 수를 조정한다.
모든 스테이지의 실패율을 구했으면 실패율을 내림차순으로 나열했을 때의 스테이지 번호를
answer에 넣어주어야 한다.
약간(?) 헷갈릴 수 있는 부분이다.
auto itr = max_element(rate.begin(), rate.end();
를 사용하였다.
auto는 자동으로 형을 정해주기 때문에 많이 활용된다..!
max_element()함수는 반복자를 리턴해주므로 itr은 결국 iterator형이 된다.
rate.begin()부터 rate.end()까지 가장 큰 값을 가지는 곳의 반복자를 리턴해준다..!
그렇다면 answer에는 itr - rate.begin() + 1을 하여 스테이지의 번호를 넣어주면 된다..!
+1을 하는 이유는 인덱스는 0부터 시작하기 때문이다..!
그리고 *itr = -111을 하여 해당 스테이지의 실패율을 가장 낮게 만들어준다..!
카카오다운 1단계 문제라고 생각한다...!
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<double> rate;
double user = stages.size();
for(int i = 1; i <= N; i++)
{
double count = 0;
for(int j = 0; j < stages.size(); j++)
{
if(stages[j] == i)
count++;
}
if(count == 0)
rate.push_back(0);
else
rate.push_back(count / user);
user -= count;
}
for(int i = 0; i < N; i++)
{
auto itr = max_element(rate.begin(), rate.end());
answer.push_back(itr - rate.begin() + 1);
*itr = -111;
}
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > KAKAO' 카테고리의 다른 글
(프로그래머스 c++ KAKAO)카카오 프렌즈 컬러링북 (3) | 2020.05.08 |
---|---|
(프로그래머스 c++ KAKAO)문자열 압축 (0) | 2020.05.06 |
(프로그래머스 c++ KAKAO)다트 게임 (0) | 2020.05.01 |
(프로그래머스 c++ KAKAO)[1차]비밀지도 (0) | 2020.04.30 |
(프로그래머스 c++ KAKAO) 1단계- 크레인 인형뽑기 (1) | 2020.04.14 |