컴굥일지
[BOJ/백준 11656][C++] 접미사 배열 본문
반응형
문제
https://www.acmicpc.net/problem/11656
문제 내용
문자열을 입력받아, 접미사를 사전 순으로 정렬하여 출력하면 된다.
문제 풀이
이 문제에서 그나마 가장 까다로운 부분은 접미사를 만들어내는 부분이다.
string 클래스의 substr(시작 지점, 문자 개수) 함수를 사용하면 쉽게 해결할 수 있다.
이 문제에서는 반복문을 n부터 시작해서 1씩 감소시켰다.
이는 첫번째 인자를 n-i로 하여 0부터 n-1까지 증가하도록 했으며, 두 번째 인자는 i로 하여 n부터 1까지 감소하도록 했다.
ex) [school] => school, chool, hool, ool, ol, l 순으로 저장된다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
//입력
string str;
cin >> str;
//문제 해결
int n = str.length(); //문자열의 길이
vector<string>v;
for (int i = n; i >0; i--) {
v.push_back(str.substr(n-i,i)); //접미사를 만드는 부분
}
sort(v.begin(), v.end()); //정렬
//결과 출력
for (int i = 0; i < v.size(); i++) {
cout << v[i] << '\n';
}
}
문제 코드 설명
1) 입력
문자열을 입력받기 때문에 string 변수를 이용하여 입력받는다.
2) 문제 해결
반복문을 돌며 접미사를 배열에 저장하고, 이를 정렬해서 순서대로 출력한다.
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 1448][C++] 삼각형 만들기 (0) | 2022.01.13 |
---|---|
[BOJ/백준 11582][C++] 치킨 TOP N (0) | 2022.01.12 |
[BOJ/백준 20044][C++] Project Teams (0) | 2022.01.10 |
[BOJ/백준 16206][C++] 롤케이크 (0) | 2022.01.07 |
[BOJ/백준 14659][C++] 한조서열정리하고옴ㅋㅋ (0) | 2022.01.06 |
Comments