새소식

카테고리 없음

[BaekJoon] 1406 번 에디터 문제 - (nodejs)

  • -
728x90
문제 번호 :  1406번

문제 바로가기 https://www.acmicpc.net/problem/1406

 

<<< 문제 내용 >>>

 

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');

let front = input[0].split('');
let back = [];
const num = Number(input[1]);
let textlength = front.length;
let arr = [];

for(let i=0; i<2+num; i++){
    arr.push(input[i].split(' '));
}

for(let i=2; i<2+num; i++){
    switch(arr[i][0]){
        case 'L':
            if(textlength>0){
                back.push(front.pop());
                textlength--;
            }
            break;
        case 'D':
            if(back.length > 0){
                front.push(back.pop());
                textlength++;
            }
            break;
        case 'B':
            if(textlength>0){
                front.pop();
                textlength--;
            }
            break;
        case 'P':
            front.push(arr[i][1]);
            textlength++;
            break;
    }
}

back.reverse();

console.log(front.join('')+back.join(''));

* 이 문제는 시간초과에 유념해야 합니다.

 

해결 방법은 우선 커서의 위치를 기준으로 front배열과 back배열을 둡니다.

커서가 왼쪽으로 이동하면 front.pop()으로 back 배열에 넣어주고,

커서가 오른쪽으로 이동하면 back.pop()으로 front배열로 이동시킵니다.

 

위 방식대로 진행 후 front와 back을 합친 것이 답이되는데

이때, back을 한번 뒤집어 주어야 원하는 대로 출력이 가능합니다.

 

 

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.