문제설명
소스코드
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
string input;
int count = 0;
cin >> input;
for (int i = 0; i < input.length(); ++i)
{
vector<string> vec;
for (int j = 0; j < input.length() - i; ++j)
{
string strTmp = input.substr(j, i + 1); //문자열 잘라내기
vec.push_back(strTmp); //벡터에 원소 추가
}
sort(vec.begin(), vec.end()); //벡터 정렬
vec.erase(unique(vec.begin(), vec.end()), vec.end()); //중복 항목 제거
count += vec.size(); //벡터의 원소 개수를 더함
}
cout << count;
}
설명
문자열 ababc가 주어졌을 때, 벡터인 vec에 들어가는 원소는 아래와 같다.
i | j | 원소 |
0 | 0 | a |
1 | b | |
2 | a - erase에 의해 제거 | |
3 | b - erase에 의해 제거 | |
4 | c | |
1 | 0 | ab |
1 | ba | |
2 | ab - erase에 의해 제거 | |
3 | bc | |
2 | 0 | aba |
1 | bab | |
2 | abc | |
3 | 0 | abab |
1 | babc | |
4 | 0 | ababc |
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[Java] 백준 15단계 - 13241번 문제 (최소공배수) (0) | 2023.07.26 |
---|---|
[Java] 백준 15단계 - 1934번 문제 (최소공배수) (0) | 2023.07.25 |
[C++] 백준 14단계 - 1269번 문제 (대칭 차집합) (0) | 2023.07.24 |
[C++] 백준 14단계 1764번 문제 (듣보잡) (0) | 2023.07.23 |
[C++] 백준 14단계 - 10816번 문제 (숫자 카드 2) (0) | 2023.07.22 |