키로거

문제

언어

  • JavaScript

문제 풀이 step 1

  • 예전에 풀었던 백준 1406번 에디터 문제와 유사하게 풀 수 있습니다.
  • 스택 2 개를 준비합니다.
  • 왼쪽 스택과 오른쪽 스택으로 구성해서 두 스택의 top이 커서의 위치입니다.
  • < (왼쪽 화살표) 가 입력되면 왼쪽 스택의 top 값을 오른쪽 스택으로 이동시킵니다.
  • > (오른쪽 화살표) 가 입력되면 오른쪽 스택의 top 값을 왼쪽 스택으로 이동시킵니다.
  • - (백 스페이스) 가 입력되면 왼쪽 스택의 top 값을 지웁니다.
  • 문자가 입력되면 왼쪽 스택에 넣어줍니다.
  • 왼쪽 스택을 join한 결과 문자열과 오른쪽 스택을 뒤집고 join한 결과 문자열을 합치면 정답이 됩니다.

소스 코드

const input = require("fs").readFileSync("/dev/stdin").toString().split("\n");

const solution = (input) => {
	let T = parseInt(input[0]);
	let index = 1;

	let res = "";
	while (T-- > 0) {
		const Str = input[index++];
		const leftStack = [];
		const rightStack = [];

		for (let i = 0; i < Str.length; i++) {
			if (Str[i] === "<") {
				if (leftStack.length > 0) rightStack.push(leftStack.pop());
			} else if (Str[i] === ">") {
				if (rightStack.length > 0) leftStack.push(rightStack.pop());
			} else if (Str[i] === "-") {
				if (leftStack.length > 0) leftStack.pop();
			} else {
				leftStack.push(Str[i]);
			}
		}

		res += leftStack.join("") + rightStack.reverse().join("") + "\n";
	}

	return res;
};

console.log(solution(input));