[JavaScript] 백준 9935 문자열 폭발 (JS)

SanE·2024년 2월 13일

Algorithm

목록 보기
47/127

문자열 폭발

📚 문제 설명


문자열이 주어지고 폭발 문자열이 주어진다.
폭발 문자열이 주어질 경우 폭발 문자열이 없어질 때까지 폭발 문자열을 전체 문자열에서 지워준다.

👨🏻‍💻 풀이 과정


해당 문제는 문자열에서 특정 문자열Trigger이 나온다면 전체 문자열에서 Trigger를 지워주면 되는 문제이다.
따라서 전체 문자열을 스택에 하나씩 넣어주다가 Trigger 문자열의 마지막 부분이 스택에 들어갔을 때 끝 부분을 잘라주면 될 것이다.
구현할 로직의 전체 과정은 다음과 같이 구성했다.

  • 문자열을 Stack 에 하나씩 push한다.
  • 만약 Stack 의 최상단에 들어온 문자가 Trigger 의 마지막과 같다면 가정문 실행
    • slice() 를 이용해 원본 배열을 유지한 채 Stack 의 뒷부분을 잘라낸 후, Trigger 문자열과 비교
    • 만약 같다면, splice() 를 이용해 원본 배열의 마지막 부분을 잘라낸다.
  • Stack 확인 후 결과를 출력한다.

전체 풀이

    let fs = require("fs");
    let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
    let InputString = input.shift().split('');
    let Trigger = input.shift();
    let Stack = [];

    const solution = (INPUT, ANSWER) => {
        for (let i = 0; i < INPUT.length; i++) {
            Stack.push(INPUT[i]);
            if (Stack[Stack.length - 1] === ANSWER[ANSWER.length - 1]) {
                if (Stack.slice(-ANSWER.length).join('') === ANSWER) {
                    Stack.splice(-ANSWER.length);
                }
            }
        }
        return Stack.length ? Stack.join('') : 'FRULA';
    };
    console.log(solution(InputString,Trigger));

🧐 후기


문자열 String의 내장 함수인 slice()splice() 에 대해 다시 한번 생각을 하게 해준 문제였고 문자열에 대해서도 다시 한번 생각을 할 수 있었던 것 같다.

profile
JavaScript를 사용하는 모두를 위해...

0개의 댓글