programmers

[Programmers Level 2] 짝지어 제거하기 Javascript

냠냠맨 2022. 12. 27. 02:30

⚡문제정보

 

같은 글자가 연속으로 들어오면 삭제해주고

모두 제거할 수 있으면 1을 아니면 0을 반환하는 문제입니다.

 

엥.. 레벨1 짜리 인형뽑기 문제가 더 어려운거같은데요

 


 

 

🔍접근방법

 

스택을 쓴다.


 

 

🔍나의 풀이

 

function solution(s){
    if (s.length % 2 !== 0) return 0;
    let stack = [s[0]];
    for (let i = 1; i < s.length; i++){
        stack.push(s[i]);
        if (stack[stack.length-2] === stack[stack.length-1]){
            stack.pop()
            stack.pop()
        }
    }
    return !stack.length ? 1 : 0;
}

 

설명은 아래에 서술합니다.

 

function solution(s){
    let stack = [s[0]];
    // stack에 s[0]을 넣어줌
    
    for (let i = 1; i < s.length; i++){
        stack.push(s[i]);
        // stack에 s[i] push
        
        if (stack[stack.length-2] === stack[stack.length-1]){
        //만약 stack의 맨뒤와 맨뒤에서 한칸 앞이 같다면
            stack.pop()
            stack.pop()
        //두번 pop해서 제거
        }
    }
    return !stack.length ? 1 : 0;
    //stacklength가 0이라면 1 return 아니면 0 return
}

 

 

반응형