-
11656) 접미사 배열 c++백준코딩일기 2020. 12. 1. 13:23
문제 ) www.acmicpc.net/problem/11656
11656번: 접미사 배열
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.
www.acmicpc.net
풀이 )
접미사를 보면, baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n 으로 총 8가지이다.
입력받은 문자열 baekjoon 인데, 가장 앞에 한 글자씩 지우면서 접미사를 만들었다는 것을 알 수 있다.1. 문자열을 입력받아서 문자열의 길이를 len 이라는 변수에 저장해 둔다.
2. 문자열을 substr() 함수를 이용하여 앞에 한 글자씩 지워서 str [] 배열에 저장한다.
str[i] = input.substr(i, len);substr(a, b) => 문자열의 a번째 글자부터 b까지 글자만 추출한다.
3. 모든 접미사를 사전순으로 정렬한다.
sort (str, str+len) => str 배열을, 배열 전체를 정렬한다.코드 )
#include <iostream> #include <algorithm> using namespace std; string input; string str[1000]; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> input; int len = input.length(); for(int i=0; i<len; i++){ str[i] = input.substr(i, len); } sort(str, str+len); for(int i=0; i<len; i++) { cout << str[i] <<"\n"; } }
'백준코딩일기' 카테고리의 다른 글
15650) N과 M (2) c++ (0) 2020.12.10 15649) N과 M (1) c++ (0) 2020.12.10 10824) 네 수 c++ (0) 2020.12.01 11655) ROT13 c++ (0) 2020.11.24 2743) 단어 길이 재기 c++ (0) 2020.11.24