카카오 - 실패율
몇번 품?!
- 21년 10월 07일 목요일
주의할점
- 분수를 만들어야 하므로 분모가 0이 되면 안됨.
- 분모 또는 분자가 float 형식이어야 한다.
- map으로 카운팅 후에 진행할 경우에는 81.5점 나온다..
-> 분모 처리를 안해줘서 그럼!
- 분수를 만들어야 하므로 분모가 0이 되면 안됨.
- 분모 또는 분자가 float 형식이어야 한다.
- map으로 카운팅 후에 진행할 경우에는 81.5점 나온다..
-> 분모 처리를 안해줘서 그럼!
https://velog.io/@kwt0124/count-%ED%95%A8%EC%88%98
map으로 접근한 소스코드
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
//내림차순으로
bool compare(pair<int,float>a, pair<int,float>b)
{
if(a.second > b.second)
{
return true;
}
else if(a.second == b.second)
{
if(a.first < b.first)
return true;
}
return false;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
map<int,int>m;
for(auto iter : stages)
{
m[iter]++;
}
vector<pair<int,float>>v(N);
int size = stages.size();
//1번 스테이지에서 N번 스테이지 까지 순차적으로 진행한다.
for(int i = 1; i<= N; i++)
{
if(size != 0)
v[i - 1] = {i, (float)m[i] / size};
else
v[i - 1] = {i , 0};
size -= m[i];
}
//정렬 할때 동일하면 작은 번호가 앞으로 오도록 해야 한다.
sort(v.begin(), v.end(), compare);
for(auto iter : v)
answer.push_back(iter.first);
return answer;
}
소스코드
#include <string>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
bool compare(pair<int,float>a, pair<int,float>b)
{
if(a.second > b.second)
return true;
else if(a.second == b.second )
{
if(a.first < b.first)
return true;
}
return false;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<int, float>>v;
int total = 0;
for(int stageNum = 1; stageNum <= N; stageNum++)
{
int cnt = count(stages.begin(), stages.end(), stageNum);
//분모가 0이 되는 것을 방지하자.
if((stages.size() - total) != 0)
v.push_back({stageNum, cnt / float(stages.size() - total)});
else
v.push_back({stageNum, 0});
total += cnt;
}
sort(v.begin(), v.end(), compare);
for(auto i : v)
answer.push_back(i.first);
return answer;
}
Author And Source
이 문제에 관하여(카카오 - 실패율), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@kwt0124/카카오-실패율
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
//내림차순으로
bool compare(pair<int,float>a, pair<int,float>b)
{
if(a.second > b.second)
{
return true;
}
else if(a.second == b.second)
{
if(a.first < b.first)
return true;
}
return false;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
map<int,int>m;
for(auto iter : stages)
{
m[iter]++;
}
vector<pair<int,float>>v(N);
int size = stages.size();
//1번 스테이지에서 N번 스테이지 까지 순차적으로 진행한다.
for(int i = 1; i<= N; i++)
{
if(size != 0)
v[i - 1] = {i, (float)m[i] / size};
else
v[i - 1] = {i , 0};
size -= m[i];
}
//정렬 할때 동일하면 작은 번호가 앞으로 오도록 해야 한다.
sort(v.begin(), v.end(), compare);
for(auto iter : v)
answer.push_back(iter.first);
return answer;
}
#include <string>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
bool compare(pair<int,float>a, pair<int,float>b)
{
if(a.second > b.second)
return true;
else if(a.second == b.second )
{
if(a.first < b.first)
return true;
}
return false;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<int, float>>v;
int total = 0;
for(int stageNum = 1; stageNum <= N; stageNum++)
{
int cnt = count(stages.begin(), stages.end(), stageNum);
//분모가 0이 되는 것을 방지하자.
if((stages.size() - total) != 0)
v.push_back({stageNum, cnt / float(stages.size() - total)});
else
v.push_back({stageNum, 0});
total += cnt;
}
sort(v.begin(), v.end(), compare);
for(auto i : v)
answer.push_back(i.first);
return answer;
}
Author And Source
이 문제에 관하여(카카오 - 실패율), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kwt0124/카카오-실패율저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)