🖥️ CS/Baekjoon Algorithms

#5430번 AC (C++)

한국의 메타몽 2020. 11. 19. 11:16

링크 : www.acmicpc.net/problem/5430

 

5430번: AC

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

www.acmicpc.net

이 문제는 어렵다기보단 번거로운 점이 많아 귀찮다.

만약 문제를 적당히 읽고 대충 풀어냈다면, 50%를 넘겨서 에러가 나거나 런타임 에러가 나올수 있다.

 

문제풀이는 다음과 같다. 

1. Reverse의 경우, 정말 하나하나 순서를 바꿔주지 말자. 

2. Reverse가 되었고 그 다음 순서가 D(빼기)라면 맨 뒤에서 부터 빼면 된다.

3. 고로 문제는 Deque를 잘 활용하기만 하면 된다.

 

하지만 문제를 대충 읽었다가는 간과한 점들이 많아 오류가 나기 쉽다. 

만약 50%를 넘겨서 에러가 나거나 런타임 에러가 발생했경우, 질문 게시판에서

다른 사람들이 올린 테스트 케이스를 통해 무엇이 틀렸는지를 알아가길 권장한다. 

 

#include <iostream>
#include <deque>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;


int main() {
	ios::sync_with_stdio(NULL);
	cin.tie(NULL);
	
	int test;
	cin >> test;
	while (test > 0) {
		string s1 = "", s2 = "", stemp ="";
		int num = 0, temp = 0, temp2 = 0;
		bool ch = false, end = false;
		deque<int>q;
		cin >> s1;
		cin >> num;
		cin >> s2;
		for (int i = 0; i < s2.size(); i++) {
			if (s2[i] >= '0' && s2[i] <= '9') temp2 = (temp2 * 10) + (s2[i] - 48);
			else{
				if (temp2 != 0) {
					q.push_front(temp2);
					temp2 = 0;
				}
			}
		}
		for (int i = 0; i < s1.size(); i++) {
			if (q.empty()&&s1[i]=='D') {
				end = true;
				break;
			}
			else {
				if (s1[i] == 'R') ch = !ch; //ch가 true면 reverse상태
				else if(s1[i]=='D') {
					if (ch) q.pop_front();
					else q.pop_back();
				}
			}
		}
		if (!q.empty()) {
			cout << "[";
			if (ch) {
				while (!q.empty()) {
					if (q.size() == 1) cout << q.front() << "]" << "\n";
					else cout << q.front() << ',';
					q.pop_front();
				}
			}
			else {
				while (!q.empty()) {
					if (q.size() == 1) cout << q.back() << "]" << "\n";
					else cout << q.back() << ',';
					q.pop_back();
				}
			}
		}
		else { 
			if (!end)cout << "[]" << "\n";
			else cout << "error" << "\n";
		}
		test--;
	}
	return 0;
}

뻘짓의 흔적들

'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글

#1992번 쿼드트리 (C++)  (0) 2020.11.20
#2630번 색종이 만들기 (C++)  (0) 2020.11.19
#1021번 회전하는 큐 (C++)  (0) 2020.11.18
#2565번 전깃줄 (C++)  (0) 2020.11.17
#1874번 스택 수열 (C++)  (0) 2020.11.13