새소식

Baekjoon

[BaekJoon] 5397 번 키로거 문제 - (nodejs)

  • -
728x90
문제 번호 :  5397 번

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

 

<<< 문제 내용 >>>

 

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

const L = Number(input[0]);

for(let i=1; i<L+1; i++){
    let text = input[i].split('');
    let front = [];
    let back = [];
    
    for(let j=0; j<text.length; j++){
        switch(text[j]){
            case '<':
                if(front.length>0) back.push(front.pop());
                break;
            case '>':
                if(back.length>0) front.push(back.pop());
                break;
            case '-':
                if(front.length>0) front.pop();
                break;
            default:
                front.push(text[j]);
                break;
        }
    }

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

* 백준의 1406번 에디터 문제와 똑같은 문제입니다.

 

커서를 이용하는 방식의 문제는 stack을 front와 back으로 나누어서 front | 커서위치 | back 으로 두고,

문제를 해결하는 것이 효율적입니다.

 

따라서 이 문제도 마찬가지로 push와 pop을 이용하여 문제를 해결할 수 있습니다.

 

이때, 마지막 출력에서 back은 한번 뒤집어주어야(reverse) 원하는 대로 출력이 가능합니다.

 

 

 

 

 

 

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

Contents

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

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