프로그래머스 #JavaScript - 짝지어 제거하기

SSO·2020년 2월 13일
0

프로그래머스 Lv2

목록 보기
34/46

문제

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

풀이

https://messycode.tistory.com/63

//2. 효율성 통과 코드 : Stack 이용
function solution(s) {
    var answer = 0;
    var stack = [];

      for(let i = 0 ; i < s.length ; i++ ){
        if( (stack.length===0) || (stack[stack.length-1] !== s[i])) {
          stack.push(s[i]);
        } else {
          stack.pop();
        }
      }
    
      if(stack.length === 0){
        answer = 1;
      } else {
        answer = 0;
      }
    
    return answer;
}

//1. Me : 시간 초과, 효율성 테스트 실패: Array 이용 -> 문자열이 매우 긴 경우!!
function solution(s){
    var answer = 0;
    var count =0;

    //배열로 변환
    var arrS = s.split('');
  
    //탐색하다 같은 게 나오면 제거
  
    for(var i=0; i<arrS.length; i++){
      if(count === arrS.length+1){ // result가 0인 경우 무한반복 방지
        break;
      }
        
    // while((arrS.length===0) || (arrS.length===1)){
      for(var j=1; j<arrS.length; j++){
        if(arrS[j-1]===arrS[j]){
          arrS.splice(j-1, 2);
          break;
        }
      }
      count=count+1;
      i=0;
    }

    if(arrS.length === 0){
      answer = 1;
    } else {
      answer = 0;
    }

    return answer;
}

더 생각해보기

참고사항

#Stack

profile
happy

0개의 댓글