문자열을 통한 정렬 , 탐색 ,bfs, dfs 에도 이용되는 범용성 높은 알고리즘이다
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(string a, string b ){
return a+b>b+a;
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> temp;
for(int i=0;i<numbers.size();i=i+1){
temp.push_back(to_string(numbers[i]));
}
sort(temp.begin(),temp.end(),cmp);
if(temp.at(0)=="0") return "0";
for(int i=0;i<temp.size();i=i+1){
answer+=temp[i];
}
return answer;
}
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
vector<int> temp;
for(int i=citations.size();i>=1;i=i-1){
int cnt=0;
for(int j=0;j<citations.size();j=j+1){
if(citations[j]>=i) cnt+=1;
}
if(cnt<=i)
answer=cnt;
//return answer;
}
return answer;
}
카카오 2019 blind recruit
#include <string>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
bool cmp(pair<int,double> a, pair<int, double> b){
if (a.second==b.second)
return a.first < b.first;
else
return a.second>b.second;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<int, double>> vv;
int failure=0;
for(int i=1; i<N+1; i++){
int cnt=0;
pair<int, float> temp;
for(int j=0; j<stages.size(); j++){
if(i==stages[j]) {
cnt++;
}
}
if(cnt==0) {
temp=make_pair(i, 0);
}
else {
temp=make_pair(i,(double)cnt/(double)(stages.size()-failure));
}
failure=failure+cnt;
vv.push_back(temp);
}
sort(vv.begin(), vv.end(), cmp);
for(int i=0; i<vv.size(); i++) {
answer.push_back(vv[i].first);
}
return answer;
}