문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/12915

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

각 문자열의 n번째 글자를 기준으로 오름차순 정렬하는 문제

이때 n번째 글자가 같으면 문자열을 비교하여 오름차순 정렬

 

문제 풀이법

처음에는 pair을 통해서 n번째 문자와, strings 상의 인덱스를 찾아서 sort해주었다

그렇게 하면 n번째 문자가 같은 경우를 처리하지 못하였다

 

sort할 때 필요한 cmp에서 n번째 글자를 알 수 있으면 바로 sort를 적용시켰을텐데, 알 수 없으니 pair를 사용하는 방법을 사용했다

하지만 전역변수를 사용한다면 cmp에서도 n번째 글자를 알 수 있게 된다!

 

따라서 cmp함수에서 n번째 글자가 같으면 문자열을 비교, 그렇지 않으면 n번째 글자를 비교하여서 정렬을 하도록 하였다

 

소스 코드

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

using namespace std;

int num;

bool cmp(string a, string b)
{
    if (a[num] == b[num])
        return a < b;
    else
        return a[num] < b[num];
}

vector<string> solution(vector<string> strings, int n) {
    num = n;
    sort(strings.begin(), strings.end(), cmp);
    
    return strings;
}
복사했습니다!