알고리즘 문제풀이

백준 - 1406 에디터

승큐니 2023. 11. 24. 21:24

백준 1406 에디터

풀이과정

나쁜 습관을 고치자

이전에도 알고리즘 리뷰를 남기면서 원래 데이터를 변형하는 방법으로는 웬만하면 풀지 말자고 생각을 했었는데, 아무 생각 없이 주어진 input을 shift()로 가져다 쓰고 있었다…
아무리 고치고 고치고 해봐도 방법이 없어서 command를 받는 부분에서 shift()가 아니라 그냥 인덱스로 값에 접근하는 방식으로 하니까 바로 풀려버렸다…
사실 뭔가 배웠다 할만한 내용도 아니긴 한데, 항상 뭔가를 할 때 나쁜 습관이 아닌지 의식해야겠다.

정답코드

const filePath = process.platform === 'linux' ? 'dev/stdin' : './input.txt';
const input = require('fs').readFileSync(filePath).toString().trim().split('\n');
  
const str = input.shift().split('');
const n = +input.shift();
const stack = [];
for (let i = 0; i < n; i++) {
	let command = input[i].split(' ');
	switch (command[0]) {
		case 'L':
		if (str.length) stack.push(str.pop());
		break;
		case 'D':
		if (stack.length) str.push(stack.pop());
		break;
		case 'B':
		if (str.length > 0) str.pop();
		break;
		case 'P':
		str.push(command[1]);
		break;
	}
}
  
let answer = str.join('');
answer += stack.reverse().join('');
  
console.log(answer);