본문 바로가기
전공공부/코딩테스트

(c++) 프로그래머스 "[3차] 파일명 정렬"

by 시아나 2022. 5. 4.

https://programmers.co.kr/learn/courses/30/lessons/17686#

 

코딩테스트 연습 - [3차] 파일명 정렬

파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램

programmers.co.kr


#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

bool compare(string s1, string s2) {
    string tmp1, tmp2;
    int n1, n2, i,k;
    for (i = 0; i < s1.size() && !isdigit(s1[i]); i++) {
            tmp1.push_back(tolower(s1[i]));
    }
    for (k = 0; k < s2.size() && !isdigit(s2[k]); k++) {
            tmp2.push_back(tolower(s2[k]));
    }
    if (tmp1.compare(tmp2) != 0) {
        return tmp1 < tmp2;
    }
    int n = 0;
    tmp1.clear(); tmp2.clear();
    for (; i < s1.size() && isdigit(s1[i]); i++,n++) {
        if (n == 5) break;
        tmp1.push_back(s1[i]);
    }
    for (n=0; k < s2.size() && isdigit(s2[k]); k++, n++) {
        if (n == 5) break; 
        tmp2.push_back(s2[k]);
    }
    n1 = stoi(tmp1); n2 = stoi(tmp2);
    if (n1 != n2) {
        return n1 < n2;
    }
    else {
        return false;
    }
}

vector<string> solution(vector<string> files) {
    stable_sort(files.begin(), files.end(), compare);
    return files;
}

'전공공부 > 코딩테스트' 카테고리의 다른 글

(c++) 백준 "10163. 색종이"  (0) 2022.05.10
(c++) 백준 "2578. 빙고"  (0) 2022.05.10
(c++) 백준 "2563. 색종이"  (0) 2022.05.04
(c++) 백준 "14696. 딱지놀이"  (0) 2022.05.03
(c++) 백준 "방 배정"  (0) 2022.05.03