본문 바로가기
Programming/C++ - 백준

[백준] 11656번 : 접미사 배열 | string.substr() 함수를 이용한 '부분 문자열 추출' (C++)

by 지구코드 2024. 3. 14.
반응형

 

 


문제


풀이

string.substr() 함수를 이용하여 부분적으로 문자열을 추출했다. 

 

아래는 substr() 함수에 대한 설명이다.

 

#include <string> //substr() 함수를 사용하기 위한 헤더 파일 <string>

string str = "CandyShop";

// str.substr(첫 번째 문자의 위치, 추출할 문자열의 길이);

str.substr();	// CandyShop | 인수가 없으면, 문자열 그대로 반환

str.substr(1);	// andyShop  | 시작 인수만 있다면, 해당 인덱스부터 마지막까지
str.substr(2);	// ndyShop
str.substr(3);	// dyShop

str.substr(4, 3); // ySh

 

string 형식의 vector을 선언하고, substr() 함수를 이용해 모든 접미사를 구해 vector에 저장했다.

 

	string s;
	vector<string> v;	// string 형식의 vector 선언
	cin >> s;

	// 모든 접미사를 찾아 vector에 저장 
	for (int i = 0; i < s.length(); i++) {
		v.push_back(s.substr(i));	// 문자열을 추출하는 substr 이용
	}

 

마지막으로, sort() 함수를 이용해 접미사들을 사전 순으로 정렬했다.

 

	sort(v.begin(), v.end());

 


코드

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

using namespace std;

int main() {
	string s;
	vector<string> v;
	cin >> s;

	// 모든 접미사를 찾아 vector에 저장 - 문자열을 부분 추출하는 substr 이용
	for (int i = 0; i < s.length(); i++) {
		v.push_back(s.substr(i));
	}

	// 벡터를 사전 순으로 정렬
	sort(v.begin(), v.end());

	for (int i = 0; i < s.length(); i++) {
		cout << v.at(i) << "\n";
	}

	return 0;
}

 


결과

 

 

 

11656번: 접미사 배열

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.

www.acmicpc.net

 

반응형

댓글