백준 [32132] "PlayStation이 아니에요"

Kimbab1004·2024년 8월 19일
0

Algorithm

목록 보기
75/102

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;
}

0개의 댓글