풀이과정
나쁜 습관을 고치자
이전에도 알고리즘 리뷰를 남기면서 원래 데이터를 변형하는 방법으로는 웬만하면 풀지 말자고 생각을 했었는데, 아무 생각 없이 주어진 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);
'알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 - 다단계 칫솔 판매 (0) | 2023.12.01 |
---|---|
프로그래머스 - 부대 복귀(Javascript) (0) | 2023.11.29 |
백준 - 1912 연속합(Javascript) (1) | 2023.11.21 |
백준 silver 3 - 1463 1로 만들기(Javascript) (0) | 2023.11.20 |
백준 silver 4 - 2839 설탕 배달(Javascript) (1) | 2023.11.20 |