문자열의 길이를 1부터 1씩 늘려가며 아직 보여주지 않은 문자 중 추가했을 때 문자열이 사전 순으로 가장 앞에 오는 문자열을 출력합니다.
저는 길이에 변화를 시켜가며 모든 경우를 다 확인하였습니다.
반복문을 통해 아직 추가하지 않은 문자를 포함한 문자열을 모두 벡터에 넣습니다. 이 때 추가한 문자열의 방문체크를 위해 인덱스를 추가합니다.
그 중 사전 순으로 가장 앞에 오는 문자열을 출력하고, 그 문자열에서 추가한 문자의 인덱스를 가져와 방문체크를 합니다.
문자열의 길이가 1 ~ size 가 될때까지 반복합니다.
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
|
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
vector<pair<string, int> > v;
bool visit[110];
string str;
void func() {
int ssize = str.size();
for (int i = 0; i < ssize; i++) {
for (int j = 0; j < ssize; j++) {
if (visit[j]) continue;
string tmp = "";
for (int k = 0; k < ssize; k++) {
if (visit[k] || j == k) {
tmp += str[k];
}
}
v.push_back({ tmp, j });
}
sort(v.begin(), v.end());
cout << v[0].first << '\n';
visit[v[0].second] = true;
v.clear();
}
}
int main() {
cin.tie(NULL); cout.tie(NULL);
ios::sync_with_stdio(false);
cin >> str;
func();
return 0;
}
|
cs |
'algorithm > Implementation' 카테고리의 다른 글
boj 17144 미세먼지 안녕! (0) | 2021.04.14 |
---|---|
boj 2564 경비원 (0) | 2021.04.13 |
boj 3085 사탕 게임 (0) | 2021.02.26 |
boj 8320 직사각형을 만드는 방법 (0) | 2021.02.25 |
boj 3985 롤 케이크 (0) | 2021.02.25 |