본문 바로가기
c++/프로그래머스

[프로그래머스] 접미사 배열(c++)

by ilp 2024. 1. 28.
반응형

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

 

프로그래머스

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

programmers.co.kr



#include <bits/stdc++.h>
using namespace std;

vector<string> solution(string my_string) {
    vector<string> answer;
    
    for(int i=0;i<my_string.size();i++){
        answer.push_back(my_string.substr(i,my_string.size()-i));
    }
    sort(answer.begin(),answer.end());
    return answer;
}

1. 변수

  • 'answer': 'my_string'의 모든 가능한 접미사를 저장한다.

2. 접미사 생성

  • 'for'을 사용하여 'my_string'의 모든 가능한 접미사를 생성한다.
    이를 위해 'substr'을 사용하여 'i'부터 마지막 까지의 부분 문자열을 추출한다.
    ('i'는 1부터 'my_string'의 길이까지 증가한다.)

3. 접미사 정렬

  • 접미사가 있는'answer'을 사전 순으로 정렬한다.
    'sort'를 사용해서 'answer'의 처음 부터 끝까지 사전 순으로 정렬해준다.
    ('sort'는 기본적으로 사전순으로 정렬해준다.)

4. 결과

  • 'answer'을 반환한다.

 

 

참고

'substr' 함수

  • 문자열의 특정 부분을 추출하는데 사용한다.
str.substr(시작 인덱스, 길이);
my_string.substr(0,i)

- '시작 인덱스'는 추출을 시작하는 위치, '길이'는 추출할 문자열의 길이이다.

- 'my_string' 문자열에서 0번째(처음)부터 i만큼 을 추출할 수 있다.

 

 

'sort' 함수

  • 주로 vector의 요소를 정렬하는데 사용한다.
  • '<agorithm>' 해더파일에 있다.
sort(시작 반복자, 끝 반복자);
sort(answer.begin(),answer.end());

- '시작 반복자'는 정렬을 시작할 위치를 가리키고,

  '끝 반복자'는 정렬을 끝낼 위치를 가리키는 반복자이다. (이 위치의 바로 앞까지 정렬된다.)

- 'answer' vector을 처음 부터 끝까지 오름차순으로 정렬했다.

 


반응형