본문 바로가기
기초다지기/JS 코딩테스트

javaScript 문자열 2개씩 제거하기

by 김빵그 2023. 11. 13.

문제 

문자열 s에서 같은 알파벳 2개 붙어있는 짝을 찾가 제거한 뒤 앞 뒤로 문자열을 이어 붙인다 이 과정을 반복해 문자열을 모두 제거할 수 있다면 1 아니면 0을 리턴

나의 풀이 

function solution(s) {
    const stack = [];

    for (let char of s) {
        if (stack.length > 0 && stack[stack.length - 1] === char) {
            // 스택이 비어있지 않고, 현재 문자가 스택의 맨 위와 같다면 짝을 이루는 것이므로 스택에서 제거
            stack.pop();
        } else {
            // 짝을 이루지 않는 경우라면 스택에 추가
            stack.push(char);
        }
    }

    return stack.length === 0 ? 1 : 0;
}
  • stack 빈 배열 작성
  • for .. of 문자열 순회하여 각 상황에 맞게 해당 문자를 제거하고 추가한다
  • for ... of 문을 사용했을때 답은 맞았지만 시간이 초과되어 아래와 같이 수정했다

리팩토링

function solution(s){
    const stack = [];
    let index = 0;
    while (index < s.length) {
        if (stack.length > 0 && stack[stack.length - 1] === s[index]) {
            stack.pop();
        } else {
            stack.push(s[index]);
        }
        index++;
    }


    return stack.length ? 0 : 1;
}
  • stack 초기화 
  • let index = 0 을 통해 문자열을 인덱스로 순회하는 변수를 초기화
  • while
    • 스택이 비어있지 않고 스택의 맨위 문자와 현재 문자가 같으면 스택에서 제거
    • 짝을 이루지 않으면 현재 문자 추가
    • index++을 통해 다음 문자로 진행한다