BOJ[5397] - 키로거 by JavaScript
키로거
문제
언어
- 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));