SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
부분 문자열을 구하는 것은
투 포인터로 하고,
중복과 정렬은 set로 구현.
set는 index로 접근을 할 수 없다.
iterator를 사용하자.
<소스 코드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include <iostream>
#include <string>
#include <set>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int test;
cin >> test;
for (int t = 1; t <= test; t++)
{
int k;
string s;
cin >> k >> s;
// 중복 제거, 정렬
set<string> ans;
// 투 포인터
for (int i = 0; i < s.length(); i++)
{
for (int j = 0; j < s.length(); j++)
ans.insert(s.substr(i, j + 1));
}
cout << '#' << t << ' ';
if (ans.size() < k)
cout << "none" << '\n';
else
{
int cnt = 0;
set<string>::iterator iter = ans.begin();
while (cnt != k - 1)
{
iter++;
cnt++;
}
cout << *iter << '\n';
}
}
return 0;
}
|
cs |