1. 문제
programmers.co.kr/learn/courses/30/lessons/17686
2. 풀이
C++의 엄청난 기능 pair을 이용하여 간단하게 풀 수 있다!
문제는 배열을 정렬할 때의 함수를 만드는게 조금 까다로웠다.
pair 안에 pair가 있는 구조였기 때문에 pair의 first , second 기능을 적극 활용하면 된다.
bool cmp(pair<string, pair<int, int>> a, pair<string, pair<int, int>> b)
{
if(a.first == b.first)
{
if(a.second.first == b.second.first)
return a.second.second < b.second.second;
return a.second.first < b.second.first;
}
else
return a.first < b.first;
}
3. 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(pair<string, pair<int, int>> a, pair<string, pair<int, int>> b)
{
if(a.first == b.first)
{
if(a.second.first == b.second.first)
return a.second.second < b.second.second;
return a.second.first < b.second.first;
}
else
return a.first < b.first;
}
vector<string> solution(vector<string> files) {
vector<string> answer;
vector<pair<string,pair<int, int>>> newFiles;
string head = "";
string number = "";
//newFiles 벡터 만들기
for(int i = 0; i < files.size();i++){
head = "";
number = "";
pair<int, int> numpair;
int next = files[i].length() -1;
//숫자가 아닐때 =>head
for(int j = 0; j < files[i].length();j++){
//숫자면 중지
if(files[i][j] >= '0'&& files[i][j] <= '9'){
next = j;
break;
}
else{
//대문자라면
if((files[i][j] >= 'A') && (files[i][j] <= 'Z')){
head+=tolower(files[i][j]);
}
else{head+=files[i][j];}
}
}
//숫자일때 -> numb
for(int j = next; j < files[i].length();j++){
if(j > next + 4){break;}
if(files[i][j] >= '0'&& files[i][j] <='9'){
number+= files[i][j];
}
else{break;}
}
if(number ==""){number = "0";}
//숫자로 변경
int num = stoi(number);
numpair = make_pair(num, i);
newFiles.push_back(make_pair(head, numpair));
}
stable_sort(newFiles.begin(),newFiles.end(),cmp);
for(auto itr : newFiles)
answer.push_back(files[itr.second.second]);
return answer;
}
4. 그외
while문으로 했는데 디지게 시간 초과나서 포문으로 바꿨더니 됐다..
대체 뭐가 문제였던건지는 몰겠다ㅠㅠ
그래도 해결했으니 뭐,,
내일은 드디어 주말!! 밀린 강의를 좀 들어야겠다ㅠㅠ
'ALGORITHM > Kakao' 카테고리의 다른 글
미완성코드/(C++)2018 KAKAO BLIND RECRUITMENT[3차] 자동완성 (0) | 2021.03.23 |
---|---|
(C++) 2018 KAKAO BLIND RECRUITMENT[1차] 추석 트래픽 (0) | 2021.03.23 |
(C++) 2018 KAKAO BLIND RECRUITMENT - 방금 그곡 (0) | 2021.03.17 |
(C++) 2018 KAKAO BLIND RECRUITMENT[3차] n진수 게임 (0) | 2021.03.16 |
(C++) 2018 KAKAO BLIND RECRUITMENT [3차] - 압축 (0) | 2021.03.15 |