본문 바로가기
코딩테스트(알고리즘)/프로그래머스

[프로그래머스] 짝지어 제거하기 (Javascript)

by Cafe Mocha 2022. 6. 22.

https://programmers.co.kr/learn/courses/30/lessons/12973


접근 방법 : BF(시간 초과) , 스택(정답)

자꾸 시간복잡도 공간 복잡도를 생각하지 못하고 구현하는데 급하다

조금만 생각하면 금방 풀수있는 문제인데 잘못된 방법으로 구현하느라 시간을 쓰고 있어서 조금 더 신경 써서 문제를 풀어야겠다.

 

시간 초과 코드

function solution(s)
{
    var answer = -1;
    s = s.split("");
    for(let i=0;i<s.length;i++){
        if(s[i]===s[i+1]){
            s.splice(i,2);
            i=-1;
        }
    }
    
    if(!s.length) answer = 1;
    else answer = 0;
    
    


    return answer;
}

 

정답 코드

Javascript

function solution(s)
{
    var answer = -1;
    s = s.split("");
    
    let stk = [];
    for(let i=0;i<s.length;i++){
        let temp = s[i];
        
        if(stk[stk.length-1]===temp){
            stk.pop();
        } else if(stk.length===0||stk[stk.length-1]!==temp){
            stk.push(temp);
        }
    }
    if(!stk.length) answer = 1;
    else answer = 0;
    
    


    return answer;
}