2023. 5. 21. 20:09, 알고리즘/BOJ
내가 작성한 코드와는 다르게 접하게된 풀이 코드는 substr()이라는 함수를 통해서 간결하게
st.substr(i); 형태로 새로운 스트링을 만들어서 그것을 string temp값에 저장하고, temp를 vector에 차곡차곡 담아서
sort를 진행했다.
#include <bits/stdc++.h>
using namespace std;
string st;
vector<string> v;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> st;
int stringlen = st.length();
for(int i = 0; i < stringlen; i++) {
string temp = st.substr(i);
v.push_back(temp);
}
sort(v.begin(), v.end());
for(auto i : v) cout << i << '\n';
return 0;
}
코드의 구조는 이런 형태이고, 이때에 substr(i) 함수가 반환값이 어떻게 되는건지, 원래의 st값은 변화가 있는 건지 등이 궁금해서,
cout << "원래 스트링은 그대로? " << st << " 그대로" << '\n';
이런식의 코드를 작성해서 실행해보았다.
결국 원래 스트링인 st는 그대로 처음 cin으로 받아들인 baekjoon으로 남아있고, substr()함수는 새로운 함수를 반환하는 함수라는걸 알 수 있었다.
내가 구현한 방법도 나쁘지 않았지만, 이런식의 함수가 있다는걸 기억하고, 이 함수를 활용하여서 문제를 해결해보도록 하자.
substr() 함수의 경우는
두가지 형태의 오버로드 된 함수가 있다고 하는데,
이때 substr(i) 형태로 i부터 끝까지의 서브 스트링을 리턴해주는 함수와
substr(a,b) 형태로 a~b까지 사이의 char로 서브 스트링을 리턴해주는 함수가 있다.
이번 풀이를 통해서 substr(i)에 대해 이해하고, 다음에 이런 형태의 문제를 만나게 되면 substr 함수를 활용해서 문제를 해결해보도록 하자.
'알고리즘 > BOJ' 카테고리의 다른 글
Comments, Trackbacks