[프로그래머스 / C++] 문자열 내 마음대로 정렬하기

YH·2023년 12월 25일
0

문제

문자열 내 마음대로 정렬하기 : 문제 링크


문제 분석

  • 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 한다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬한다.

  • 제한 조건

  • strings는 길이 1 이상, 50이하인 배열이다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열이다.
  • 모든 strings의 원소의 길이는 n보다 크다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치한다.
  • 문자열의 오름차순 정렬을 위해 sort() 함수를 사용할 것 이므로 algorithm 헤더를 포함
  • sort() 함수를 사용하고, comp 인자를 [n](string a, string b)로 설정하여 문자열 a, b의 n번째 문자를 비교. if문을 사용하여 a, b의 n번째 문자를 비교했을때 같은 문자라면 사전순으로 문자열을 정렬하고, 다른 문자라면 n번째 문자를 기준으로 오름차순으로 문자열을 정렬. 최종적으로 저장된 문자열 strings를 return

algorithm 헤더의 sort() 함수 사용법
void sort(T start, T end, Compare comp); //comp 인자가 공란이면 오름차순 정렬

  • sort(v.begin(), v.end(), compare); // 사용자 정의 함수 사용
  • sort(v.begin(), v.end(), greater<자료형>()); // 내림차순
  • sort(v.begin(), v.end(), less<자료형>()); // 오름차순

풀이

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

using namespace std;

vector<string> solution(vector<string> strings, int n) {
    sort(strings.begin(), strings.end(), [n](string a, string b) {
        if(a[n] == b[n]) return a < b;
        return a[n] < b[n];
    });
    return strings;
}
profile
Keep Recycling Your Dreams

0개의 댓글