No Rules Rules

AC (feat. 백준, 5430번) 본문

생활/코테

AC (feat. 백준, 5430번)

개발하는 완두콩 2022. 8. 13. 18:17
728x90
반응형

AC
https://www.acmicpc.net/problem/5430

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

 

반응형

 

// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <sstream>
#include <cstring>
#include <deque>
using namespace std;
int arr[100000];
deque<int> split(string str, char Delimiter) {
	istringstream iss(str);
	string buffer;
	deque<int> result;
	while (getline(iss, buffer, Delimiter))
		result.push_back(stoi(buffer));
	return result;
}
int main() {
	ios::sync_with_stdio(false), cin.tie(NULL);
	string str1, str2;
	register int T, N;
	bool rotate;
	deque<int> ans;
	cin >> T;
	for (register int t = 0, i; t < T; ++t) {
		rotate = false;			// false : front, true : back
		cin >> str1 >> N >> str2;
		str2.erase(0, 1), str2.erase(str2.size() - 1, 1);
		ans = split(str2, ',');
		for (i = 0; i < str1.size(); ++i)
			if (str1.at(i) == 'R')
				rotate = !rotate;
			else {
				if (ans.empty())		break;
				if (!rotate)			ans.pop_front();
				else				ans.pop_back();
			}
		if (i == str1.size()) {
			cout << "[";
			if(!rotate)
				while (!ans.empty()) {
					cout << ans.front(), ans.pop_front();
					if (!ans.empty())	cout << ",";
				}
			else
				while (!ans.empty()) {
					cout << ans.back(), ans.pop_back();
					if (!ans.empty())	cout << ",";
				}
			cout << "]" << "\n";
		}
		else
			cout << "error" << "\n";
	}
	return 0;
}
// *&)*@*
  1. 문제에서 주어진 'R'의 기능. 즉, 로테이션은 실제로 수행할 필요는 업습니다.
  2. reverse를 통해 deque를 로테이션 해보았지만 시간 초과 판정을 받았습니다.
  3. 따라서 'R'이 올때마다 flag를 바꾸기만 하고, 실제 'D'의 기능 또는 답안을 제출할때의 기능에서 front를 할지 back을 할지만 결정 해주면 됩니다.
728x90
반응형
Comments