코딩,문제풀이/SWExpertAcademy
1256. [S/W 문제해결 응용] 6일차 - K번째 접미어(D5)
DdoubleJ
2018. 6. 24. 12:26
STL을 사용하면 편하게 구현할 수 있다.
string 에 문자열을 입력 받은 후, 벡터에 문자열을 저장하고, 가장 앞의 문자를 제거하고, 다시 문자열을 저장하고, 가장 앞의 문자를 제거하고.. 를 반복했다.
이러면 벡터에 가장 앞의 문자 하나씩 제거되며 들어가게 된다.
그리고 벡터를 sort해주면 알아서 문자열을 알파벳 순서로 정렬해준다.
정렬 후 , K번째 문자열을 출력하면 결과가 나온다.
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 | #include <cstdio> #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; int main(void) { int T; scanf("%d\n", &T); for (int test_case = 1; test_case <= T; test_case++) { int k; string str; scanf("%d\n", &k); cin >> str; vector<string> v; int length = str.length(); for (int i = 0; i < length; i++) //길이 만큼 접미어가 있다. { v.push_back(str); str.erase(0,1); } sort(v.begin(), v.end()); vector<string>::iterator it = v.begin(); for (int i = 1; i < k; i++) { it++; } cout << "#" << test_case << " " << (*it) << "\n"; } return 0; } | cs |