티스토리 뷰
728x90
와 진짜 어렵다.
처음에 vector를 이용하여 Reverse해서 했다. 틀렸다. 시간 초과
오 그러면 자료구조사용하지 말고 string만 문자열로만 풀어볼까! 물론 reverse를 사용했다. 시간 초과
시간 초과~~ revrse때문이다. 란 생각을 했다.
revrser를 대신할 수 있는 것은 deque..
deque를 이용하여 출력했는데 답이 틀린다. 어..? 왜지 구렁텅이로 빠져간다.
www.acmicpc.net/board/view/25456
글 읽기 - ★☆★☆★ [필독] AC FAQ ★☆★☆★
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
질문 게시판에 보면
- 빈 배열은 []로 출력해야 합니다. 아무것도 출력하지 않거나, error를 출력하거나, 무조건 원소를 하나 출력하고 시작하려고 하면 안 됩니다.
이 부분...!!!!
#include <iostream>
#include <deque>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int T;
cin >> T;
while(T--){
deque<int> dq;
string ins, data;
int dataNumber;
bool isReverse = false, isError = false;
cin >> ins >> dataNumber >> data;
// 수를 덱에 집어 넣기
string temp = "";
for(int i=0; i<data.size(); i++){
if(data[i] == '[') continue;
else if( '0' <= data[i] && data[i] <= '9'){
temp += data[i];
} else if( (data[i] == ',' || data[i] == ']') && temp != "" ){
dq.push_back(atoi(temp.c_str()));
temp = "";
}
}
// 명령어 따라 처리하기.
for(int i=0; i<ins.size(); i++){
if(ins[i] == 'R') isReverse = !isReverse;
else if(ins[i] == 'D'){
if(dq.empty()){
isError = true;
break;
}
if(isReverse) dq.pop_back();
else dq.pop_front();
}
}
// 출력하기
if(isError){
cout << "error\n";
} else if(dq.empty()){
cout << "[]\n";
} else if(isReverse){ // 거꾸로
cout << "[";
while(dq.size()>1){
cout << dq.back() << ",";
dq.pop_back();
}
cout << dq.back() << "]\n";
} else{
cout << "[";
while(dq.size()>1){
cout << dq.front() << ",";
dq.pop_front();
}
cout << dq.front() << "]\n";
}
}
}
진짜 어렵ㄷ ㅜ
반응형
'코딩 관련 > c++' 카테고리의 다른 글
백준 1011 Fly me to the Alpha Centauri 분석 (0) | 2020.07.22 |
---|---|
백준 17626 Four Square 코드 X 문제 설명 O (0) | 2020.07.20 |
백준 1021 회전하는 큐 c++ (0) | 2020.05.09 |
백준 5397 키로커 C++ (0) | 2020.05.09 |
백준 1003번 피보나치 함수 C++ (0) | 2020.05.06 |