본문 바로가기
Problem Solving

[C++] [백준 11656] 접미사 배열

by tls1107 2021. 7. 27.
728x90
반응형


문제 풀기 전 생각 : 

/*
배열을 만든다.
입력된 문자열을 매 반복마다 앞에서 한글자씩 없앤다. substr 사용한다.
그리고 없앤후 해당 문자열을 배열에 넣는다.
그리고 마지막에 출력한다
*/

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
  string s;
  cin >> s;
  string str[s.length()];
  for(int i=0 ; i<s.length() ; i++){
    str[i] = s.substr(i,s.length()-i);
  }
  sort(str,str+s.length());

  for(int i=0 ; i<s.length() ; i++){
    cout << str[i] << "\n";
  }
  return 0;
}

https://www.acmicpc.net/problem/11656

 

11656번: 접미사 배열

첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.

www.acmicpc.net


풀 때 어려웠던 점 또는 느낀점 :

어려운 부분은 없었다!

쉬어가는 문제인듯 하다

하도 많은 문제를 단기간에 풀려고 하니

조금 지치는 것 같다. 

날씨가 너무 더워서 그런가


개선방안 :

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	
	vector<string> vec;
	string s;
	int i;
	
	cin >> s;
	vec.push_back(s);
	
	for(i=0; !s.empty(); i++)
	{
		s.erase(0, 1);
		vec.push_back(s);
	}
	
	vec.pop_back();
	
	sort(vec.begin(), vec.end());
	
	for(i=0; i<vec.size(); i++)
		cout << vec[i] << '\n';
	
	return 0;
}

erase 함수를 사용해도 되었구나...

머리를 한대 맞았군요

담부터 기억하고 사용해야 겠다.

728x90
반응형

댓글