본문 바로가기
Programming Solve/BOJ

BOJ 5430 - AC / C++

by msm1029 2022. 5. 1.
반응형

문제 링크 : https://www.acmicpc.net/problem/5430

 

5430번: AC

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

www.acmicpc.net

 

 

풀이

입출력 방식이 독특해서 처리해야할 과정이 조금 존재한다.

숫자 배열을 입력받을 때 "[1, 2, 3, 4]"와 같이 들어오므로

char 형식의 변수를 하나 생성하여 괄호와 쉼표를 입력받고 사용하지 않는다.

n == 0일 경우 괄호만 들어오므로 이 부분도 처리해야한다.

 

입력 처리가 완료되었으면 주어진 숫자들을 덱에 넣고 R, D 조건에 맞춰 구현하면 된다.

이 때, R이 들어올 때마다 원소들을 실제로 뒤집으면 시간 초과가 발생한다.

따라서, bool 변수 rev를 통해 원소가 뒤집어진 상태인지 아닌 지를 나타내면 된다.

삭제할 때에도 뒤집어져 있다면 pop_back을, 원상태라면 pop_front를 해줘야한다.

 

에러 발생 여부는 bool 변수 flag를 통해 처리하여 에러시 "Error"를

아니라면 덱의 원소들을 출력 형식에 맞게 출력한다.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(); cout.tie();

	int T;
	cin >> T;

	for (int t = 0; t < T; t++) {
		deque<int> dq;
		string str;
		int n;
		bool flag = true;
		bool rev = true;//true면 원 상태, false면 뒤집어진 상태
		cin >> str >> n;
		char trash;

		if (n == 0)
			cin >> trash;

		for (int i = 0; i < n; i++) {
			int tmp;
			cin >> trash;
			cin >> tmp;
			dq.push_back(tmp);
		}
		cin >> trash;

		for (int i = 0; i < str.size(); i++) {
			if (str[i] == 'R') {
				if (rev == true)
					rev = false;
				else
					rev = true;
			}
			else {
				if (dq.empty()) {
					cout << "error" << '\n';
					flag = false;
					break;
				}
				else
					if (rev == true)
						dq.pop_front();
					else
						dq.pop_back();
			}
		}

		if (flag == false)
			continue;
		else {
			if (rev == true) {
				cout << '[';
				for (int i = 0; i < dq.size(); i++) {
					if (i == (dq.size() - 1))
						cout << dq[i];
					else
						cout << dq[i] << ',';
				}
				cout << ']' << '\n';
			}
			else {
				cout << '[';
				for (int i = dq.size() - 1; i >= 0; i--) {
					if (i == 0)
						cout << dq[i];
					else
						cout << dq[i] << ',';
				}
				cout << ']' << '\n';
			}
		}
	}
}
반응형

'Programming Solve > BOJ' 카테고리의 다른 글

BOJ 14501 - 퇴사 / C++  (0) 2022.05.04
BOJ 14500 - 테트로미노 / C++  (0) 2022.05.02
BOJ 9375 - 패션왕 신해빈 / C++  (0) 2022.05.01
BOJ 10464 - XOR / C++  (0) 2022.04.21
BOJ 1107 - 리모컨 / C++  (0) 2022.04.21