[백준1406] 에디터 (C++)

1840 단어 ps백준ps

BOJ 바로가기

#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <stack>
#include <cstring>
using namespace std;
char str[600000];

int main() {
	stack<char> left, right;
	scanf("%s", str);
	int len = strlen(str);
	for (int i = 0; i < len; i++) {
		left.push(str[i]);
	}
	int num;
	scanf("%d", &num);
	while (num--) {
		char what;
		scanf(" %c", &what);
		if (what == 'L') {
			if (!left.empty()) {
				right.push(left.top());
				left.pop();
			}
		}
		else if (what == 'D') {
			if (!right.empty()) {
				left.push(right.top());
				right.pop();
			}
		}
		else if (what == 'B') {
			if (!left.empty()) {
				left.pop();
			}
		}
		else if (what == 'P') {
			char addc;
			scanf(" %c", &addc);
			left.push(addc);
		}
	}
	while (!left.empty()) {
		right.push(left.top());
		left.pop();
	}
	while (!right.empty()) {
		printf("%c", right.top());
		right.pop();
	}
	return 0;
}
  • scanf로 string 자료형을 입력받고 난 후에 char 자료형을 입력받을 때는 상당히 주의해야 한다.

  • " %c" 형식으로 공백 한 칸을 꼭 띄워줘야 한다.

분명 잘 풀었는데 에러가 떠서 당황스러웠는데 공백을 쓰지 않은 탓이었다. 원인은 string 자료형을 입력받은 후에는 입력버퍼가 깔끔하게 비워져 있지 않기 때문이라고 한다.

좋은 웹페이지 즐겨찾기