[프로그래머스 / C++] 접미사 배열

YH·2023년 11월 2일
0

문제

접미사 배열 : 문제 링크


문제 분석

  • 어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미한다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a" 이다. 문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return
  • 추출할 문자열을 임시로 저장할 문자열 tmp를 선언. for loop를 통해 초기화식을 i = my_string.size() - 1로, 조건식을 i >= 0로 설정하여 문자열 마지막부터 첫번째로 검사하도록 설정. substr() 함수를 사용하여 i를 시작인덱스 인자로 설정하여 해당 인덱스부터 문자열 끝까지 추출하여 tmp에 저장후, answer에 저장. for loop 종료 후, sort() 함수를 통해 사전순(오름차순)으로 정렬. 최종적으로 저장된, 문자열 배열 answer을 return

substr() 함수 사용법
1. substr(시작인덱스, 문자열 길이)
=> 시작인덱스 부터 주어진 문자열 길이만큼 추출
2. substr(시작인덱스)
=> 시작인덱스 부터 문자열 끝까지 추출

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(string my_string) {
    vector<string> answer;
    string tmp;
    
    for(int i = my_string.size() - 1; i >= 0; --i) {
        tmp = my_string.substr(i);
        answer.push_back(tmp);
    }
    sort(answer.begin(), answer.end());
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글