문자열 내 마음대로 정렬하기

magicdrill·2024년 12월 27일

문자열 내 마음대로 정렬하기

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

using namespace std;

int global_n;//전역변수 n

//오름차순 정렬
bool compare(string A, string B){
    if(A[global_n] == B[global_n]){
        return A < B;
    }
    else{
        return A[global_n] < B[global_n];
    }
}

vector<string> solution(vector<string> strings, int n) {
    vector<string> answer;
    
    //n이 1이면 그거 기준으로, 근데 해당 인덱스의 문자가 같으면 그때는 사전순으로
    //1. compare 함수를 만들어서 사용자정의 정렬
    //해당 방법으로는 compare에 n을 보낼 수 없기 때문에 전역변수 n을 만들어야 함
    global_n = n;
    sort(strings.begin(), strings.end(), compare);
    for(string temp : strings){
        cout << temp << " ";
        answer.push_back(temp);
    }
    cout << "\n";
    
    //2. 람다 함수로 사용자정의 정렬
    //해당 방법은 compare 재사용이 불가능하고 가독성이 떨어질 수 있음
    sort(strings.begin(), strings.end(), [n](const string& A, const string& B){
        if(A[n] == B[n]){
            return A < B;
        }
        else{
            return A[n] < B[n];
        }
    });
    for(string temp : strings){
        cout << temp << " ";
        answer.push_back(temp);
    }
    cout << "\n";
    
    return answer;
}

0개의 댓글