짱아의 개발 기록장

프로그래머스. 파일명 정렬(c++) / String 본문

Algorithm/Programmers

프로그래머스. 파일명 정렬(c++) / String

jungahshin 2021. 4. 12. 00:18
반응형

문자열 처리의 대표적인 문제 유형이다.

문자열 처리하고 정렬을 해주면 바로 풀린다. 중간에 예외처리만 잘 해준다면 어렵지 않다.

딱히 설명은 필요없이 코드를 참고하면 충분히 이해가능할 것이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
vector<string> solution(vector<string> files) {
    vector<string> answer;
    vector<pair<pair<stringint>int>> tmp;
    map<intstring> m;
    
    for(int i=0; i<files.size(); i++){
        m[i] = files[i];
        string head = "";
        string number = "";
        bool isNum = false;
        int cnt = 0;
        for(int j=0; j<files[i].size(); j++){
            char c = files[i][j];
            if(('a'<=&& c<='z'|| ('A'<=&& c<='Z'|| c == ' ' || c=='-' || c=='.'){
                if(isNum) break;
                head += tolower(c);
            }else{
                cnt++;
                isNum = true;
                if(cnt>5break;
                number += c;
            }
        }
        tmp.push_back(make_pair(make_pair(head, stoi(number)), i));
    }
    
    sort(tmp.begin(), tmp.end());
    
    for(int i=0; i<tmp.size(); i++){
        answer.push_back(m[tmp[i].second]);
    }
    
    return answer;
}
cs
반응형
Comments