728x90
반응형
목차
https://www.acmicpc.net/problem/1406
문제
문제 구현 방향
처음에 slice로 문자열 붙여 넣기하고 자르기 해서 시간초과로 인해 틀렸다..
그 이유는 slice는 O(N)의 시간 복잡도를 가지기 때문이다.
올바른 문제풀이
당연히 자료구조로 풀면 풀린다. js메서드로 shift연산은 O(N)의 시간복잡도를 가지므로 스택을 사용해 풀었다.
커서를 기준으로 왼쪽 스택, 오른쪽 스택이 있다고 생각하면 쉽게 풀린다. (이걸 떠올리는게 어렵다..)
코드 구현
const input = require("fs")
.readFileSync("./dev/stdin", "utf-8")
.trim()
.split("\n");
let lStack = input[0].trim().split("");
let rStack = [];
let idx =2;
while(idx < input.length){
let order = input[idx].trim().split(" ");
if(order[0] === 'P'){
lStack.push(order[1]);
}
else if(order[0] === 'L'){
if(lStack.length)rStack.push(lStack.pop());
}
else if(order[0] === 'D'){
if(rStack.length)lStack.push(rStack.pop());
}
else if(order[0] === 'B'){
lStack.pop();
}
idx++;
}
let answer = lStack.join("");
answer += rStack.reverse().join("");
console.log(answer);
반응형
'백준 문제풀이 > Nodejs' 카테고리의 다른 글
[백준][dp] 1890 점프 NodeJs 구현 (0) | 2025.01.13 |
---|---|
[백준][dp] 1937 욕심쟁이 판다 NodeJs 구현 (0) | 2025.01.09 |
[백준][스택] 2493 탑 NodeJs 구현 (0) | 2024.12.31 |
[백준][브루트 포스] 1759 암호 만들기 NodeJs 구현 (0) | 2024.12.30 |
[백준][슬라이딩 윈도우] 1593 문자해독 NodeJs 구현 (0) | 2024.12.26 |