DP를 이용해 해결했다. PS4 이거나 PS5일 경우에만 생각하면 됐기 때문에 P,S,4,5가 아닌 문자는 모두 최종 결과에 넣어주었고 위 4가지 경우에는 DP 배열에 넣어 4나 5가 되었을때 이전 값이 PS인지 확인하고 만약 PS가 아니였다면 4,5역시 정답에 넣어주었다.
#include <iostream>
#include <vector>
using namespace std;
int n;
string s;
vector<char> v;
string dp[51];
vector<char> result;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
cin >> s;
for (int i = 0; i < s.size(); i++) {
v.push_back(s[i]);
}
dp[0] = v[0];
result.push_back(v[0]);
for (int i = 1; i < n; i++) {
if (v[i] == 'P') {
dp[i] = 'P';
result.push_back(v[i]);
}
else if (v[i] == 'S') {
if (dp[i - 1] == "P") {
dp[i] = "PS";
}
else {
dp[i] = 'S';
}
result.push_back(v[i]);
}
else if (v[i] == '4' || v[i] == '5') {
if (dp[i - 1] == "PS") {
dp[i] = "PS";
continue;
}
else {
result.push_back(v[i]);
}
}
else {
result.push_back(v[i]);
}
}
for (int i = 0; i < result.size(); i++) {
cout << result[i];
}
return 0;
}