๋ฌธ์
์ฝ๋
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
//22:13 ~ 22:50
using namespace std;
struct Detail{
string head;
int num;
string origin;
};
vector<string> answer;
bool cmp(const Detail& d1, const Detail& d2){
if(d1.head!=d2.head) return d1.head<d2.head;
else if(d1.num!=d2.num) return d1.num<d2.num;
return false;
}
Detail divide(string s){
string head,num,temp;
Detail detail;
for(int i=0; i<s.length(); i++){
if(!isdigit(s[i])&&num.empty()) temp+=s[i];
else{
if(head.empty()){
head = temp;
temp.clear();
num+=s[i];
}
else num+=s[i];
}
}
detail.head = head;
detail.num = stoi(num);
detail.origin = s;
return detail;
}
vector<string> solution(vector<string> files) {
vector<Detail> v;
for(string file:files) v.push_back(divide(file));
for(int i=0; i<v.size(); i++) transform(v[i].head.begin(), v[i].head.end(), v[i].head.begin(),::tolower);
stable_sort(v.begin(),v.end(),cmp); // ์ฌ๊ธฐ ๊ทธ๋ฅ sortํ๋ฉด ํ๋ฆผ!!
for(int i=0; i<v.size(); i++) answer.push_back(v[i].origin);
return answer;
}
int main(){
solution({"O00321", "O49qcGPHuRLR5FEfoO00321"});
for(int i=0; i<answer.size(); i++){
cout<<answer[i]<<'\n';
}
}
ํ์ด(37๋ถ)
์ด ๋ฌธ์ ๋ฅผ ํตํด์ c++์ stable_sort์ sort์ ์ฐจ์ด์ ๋ํด์ ์๊ฒ ๋์์ต๋๋ค. ๋ถ๋ช ์๋ฒฝํ๊ฒ ๊ตฌํํ๋๋ฐ ๊ณ์ ์ค๋ต์ด ๋จ๊ธธ๋ ์ง๋ฌธ ๋ชฉ๋ก์ ์ฐพ์๋ณด๋ c++์ ์ฌ์ฉํ๋ ์ฌ๋์ sort๋ฅผ stable_sort๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ํด๊ฒฐ์ด ๋๋ค๊ณ ํด์ ๋ฐ๊ฟจ๋๋ฐ ๋ฐ๋ก ์ ๋ต์ด ๋ด์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๋ ๊ฐ์ ๊ฒฝ์ฐ๋ sort๊ฐ ๋ ๋น ๋ฅด์ง๋ง ๋์ผํ ์ฐ์ ์์์ ํํด์๋ ์์๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค๊ณ ํฉ๋๋ค. ๋ฐ๋ฉด์ stable_sort๋ ๋์ผํ ์ฐ์ ์์์ผ ๋ ์์๋ฅผ ๋ณด์ฅํด์ค๋ค๊ณ ํฉ๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ํ๋ก๊ทธ๋๋จธ์ค(Programmers)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQL] ํ๋ก๊ทธ๋๋จธ์ค - SQL ๊ณ ๋์ Kit (0) | 2022.05.28 |
---|---|
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ฌํ๊ฒฝ๋ก(Level 3) (0) | 2022.05.27 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ฅ ๋จผ ๋ ธ๋(Level 3) (0) | 2022.05.05 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ ํ์ ์๊ฐ ์ด๋(Level 2) (0) | 2022.05.01 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ(Level 2) (0) | 2022.04.26 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ๊ตฌ๋ช ๋ณดํธ(Level 2) (0) | 2022.04.25 |
๋๊ธ