Coding_Test_C++

BaekJoon 5430번: AC(C++)

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

 

5430번: AC

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

www.acmicpc.net

풀이법

1) Deque를 이용하여 문제를 해결하였다.

2) 구현 또한 포함되어 있는 부분이기에, 문제의 예제에서 \n와 break가 어디에 들어갈 수 있는지가 중요할 것이다.

#include <string>
#include <iostream>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>
#include <math.h>
#include <map>
#define INF 987654321
using namespace std;

int t;
int main()
{
	cin.tie(0);
	ios::sync_with_stdio(false);
	cin >> t;
	for (int p = 0; p < t; p++)
	{
		deque<int> dq;
		string s;// 어떤 functoin
		cin >> s;
		int arrSize; //사이즈
		cin >> arrSize;
		string sArr;
		cin >> sArr; //배열
		string temp;//2자리 이상의 숫자를 위해
		for (int i = 0; i < sArr.size(); i++)
		{
			if (sArr[i] == '[')
				continue;
			else if (sArr[i] >= '0' && sArr[i] <= '9')
				temp += sArr[i];
			else if (sArr[i] == ',' || sArr[i] == ']')
			{
				if (!temp.empty())
				{
					dq.push_back(stoi(temp));
					temp.clear();
				}
			}
		}



		bool check = true;//정방향
		bool check2 = false;
		for (int i = 0; i < s.size(); i++)
		{
			if (s[i] == 'R')
			{
				if (check == true)
					check = false;//역방향
				else
					check = true;
			}
			else if (s[i] == 'D')
			{
				if (check == true)
				{
					if (!dq.empty())
						dq.pop_front();
					else
					{
						cout << "error" << "\n";
						check2 = true;
						break;
					}
				}
				else if (check == false)
				{
					if (!dq.empty())
						dq.pop_back();
					else
					{
						cout << "error" << "\n";
						check2 = true;
						break;
					}
						
				}
			}
		}
		if (check2 == true)
			continue;
		if (check == true)
		{
			cout << "[";
			int b = dq.size();
			for (int i = 0; i < b; i++)
			{
				int temp = dq.front();
				dq.pop_front();
				cout << temp;
				if (!dq.empty())
					cout <<",";
			}
			cout << "]" << "\n";
		}
		else if (check == false)
		{
			cout << "[";
			int b = dq.size();
			for (int i = b-1; i >= 0; i--)
			{
				int temp = dq.back();
				dq.pop_back();
				cout << temp;
				if (!dq.empty())
					cout << ",";
			}
			cout << "]" << "\n";
		}
		
	}
}

'Coding_Test_C++' 카테고리의 다른 글

BaekJoon 2294번: 동전 2(C++)  (0) 2021.07.21
BaekJoon 11048번: 이동하기(C++)  (0) 2021.07.21
BaekJoon 6118번: 숨바꼭질  (0) 2021.07.19
BaekJoon 1303번: 전쟁 - 전투(C++)  (0) 2021.07.19
BaekJoon 2467번: 용액(C++)  (0) 2021.07.18