hades

[Baekjoon] 5430๋ฒˆ: AC ๋ณธ๋ฌธ

๐Ÿ‘Š PS/Algorithm

[Baekjoon] 5430๋ฒˆ: AC

hades1 2024. 7. 15. 10:08

๐Ÿฅ… ๋ฌธ์ œ

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

 

๐Ÿ” ์„ค๊ณ„

R์ด๋ฉด ๋’ค์ง‘๊ณ , D์ด๋ฉด ๋งจ ์•ž์— ์žˆ๋Š” ์ˆซ์ž๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•˜๋Š”๋ฐ, R์ผ ๋•Œ๋งˆ๋‹ค ๋’ค์ง‘๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋œ๋‹ค.

๋”ฐ๋ผ์„œ, ์•ž ๋’ค์—์„œ ์‚ญ์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฑ์„ ์ด์šฉํ•œ๋‹ค.

 

์ž…๋ ฅ์— ๊ด„ํ˜ธ์™€ ์‰ผํ‘œ๊ฐ€ ํฌํ•จ๋˜์–ด ์ž…๋ ฅ๋˜๋ฏ€๋กœ, ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ์ˆซ์ž๋“ค์„ ๋‹ด์•„์•ผ ํ•œ๋‹ค.

[ ๋ผ๋ฉด ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

, ๋˜๋Š” ] ๋ผ๋ฉด ์ˆซ์ž๋ฅผ ๋ฑ์— ๋‹ด๋Š”๋‹ค.

์ด์™ธ๋ผ๋ฉด, ์ˆซ์ž๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

 

์ถœ๋ ฅ, ์‚ญ์ œํ•  ๋•Œ ์•ž์—์„œ๋ถ€ํ„ฐ ํ• ์ง€ ๋’ค์—์„œ๋ถ€ํ„ฐ ํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด sign์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์˜€๋‹ค. 0์ด๋ฉด ์•ž์—์„œ๋ถ€ํ„ฐ, 1์ด๋ฉด ๋’ค์—์„œ๋ถ€ํ„ฐ, 2์ด๋ฉด ๋น„์–ด์žˆ๋Š”๋ฐ ์‚ญ์ œํ•ด์„œ error์ธ ๊ฒฝ์šฐ์ด๋‹ค.

 

๐Ÿ‘Š ํ’€์ด

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

int t, n, sign;
deque<int> dq;
string p, temp_list, temp_num;

int main(void)
{
	cin >> t;
	for (int i = 0; i < t; i++) {
		sign = 0;
		cin >> p >> n >> temp_list;
		for (int j = 0; j < temp_list.length(); j++) {
			if (temp_list[j] == '[') {
				continue;
			}
			if (temp_list[j] == ',' || temp_list[j] == ']') {
				if (temp_num == "") {
					continue;
				}
				dq.push_back(stoi(temp_num));
				temp_num = "";
			}
			else {
				temp_num += temp_list[j];
			}
		}
		for (int j = 0; j < p.length(); j++) {
			if (p[j] == 'R') {
				if (sign == 1) {
					sign = 0;
				}
				else if (sign == 0) {
					sign = 1;
				}
			}
			else if (p[j] == 'D') {
				if (dq.empty()) {
					sign = 2;
					break;
				}
				if (sign == 0){
					dq.pop_front();
				}
				else if (sign == 1) {
					dq.pop_back();
				}
			}
		}
		int size = dq.size();
		if (sign == 0) {
			cout << "[";
			for (int j = 0; j < size; j++) {
				cout << dq.front();
				dq.pop_front();
				if (j < size - 1) {
					cout << ",";
				}
			}
			cout << "]\n";
		}
		else if (sign == 1) {
			cout << "[";
			for (int j = 0; j < size; j++) {
				cout << dq.back();
				dq.pop_back();
				if (j < size - 1) {
					cout << ",";
				}
			}
			cout << "]\n";
		}
		else if (sign == 2) {
			cout << "error" << "\n";
		}
	}
	return 0;
}

 

๐Ÿ“ ๋ฉ”๋ชจ

  • ์•ž๋’ค ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๋ฑ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋น„์–ด์žˆ๋Š”๋ฐ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์— error๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ๋น„์–ด์žˆ๊ธฐ๋งŒ ํ•œ ๊ฒฝ์šฐ์—๋Š” [] ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.