Recent Posts
Notice
No Rules Rules
AC (feat. 백준, 5430번) 본문
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;
}
// *&)*@*
- 문제에서 주어진 'R'의 기능. 즉, 로테이션은 실제로 수행할 필요는 업습니다.
- reverse를 통해 deque를 로테이션 해보았지만 시간 초과 판정을 받았습니다.
- 따라서 'R'이 올때마다 flag를 바꾸기만 하고, 실제 'D'의 기능 또는 답안을 제출할때의 기능에서 front를 할지 back을 할지만 결정 해주면 됩니다.
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
쿼드트리 (feat. 백준, 1992번) (0) | 2022.08.14 |
---|---|
색종이 만들기 (feat. 백준, 2630번) (0) | 2022.08.13 |
회전하는 큐 (feat. 백준, 1021번) (0) | 2022.08.13 |
덱 (feat. 백준, 10866번) (0) | 2022.08.13 |
프린터 큐 (feat. 백준, 1966번) (0) | 2022.08.12 |
Comments