프로그래머스 #JavaScript - 올바른 괄호

SSO·2020년 2월 6일
0

프로그래머스 Lv2

목록 보기
22/46

문제

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

풀이

  1. 맞은 코드
function solution(s){
    var answer = true;

  var stack = [];
  
  for(var i=0; i<s.length; i++){
    if(s[i]==='('){
      stack.push(s[i]);
    }else{
      if(stack.length===0){
        answer = false;
      }
      stack.pop(s[i-1]);
    }
  }
  
  if(stack.length !== 0){
    answer = false;
  }
    return answer;
}
  1. 처음 풀이(실패=> 정확성 2,5,6,11,17 효율성 2 실패)
    이전에 나온 괄호 문제를 생각해서 별 고민 없이 stack으로 해결 -
function solution(s){
    var answer = true;

  var stack = [];
  
  for(var i=0; i<s.length; i++){
    if(s[i]==='('){
      stack.push(s[i]);
    }else{
      stack.pop(s[i]);
      stack.pop(s[i-1]);
    }
  }
  
  if(stack.length !== 0){
    answer = false;
  }
    return answer;
}
  1. 그 다음 수정 => 여전히 실패하는 부분이 있었음..
function solution(s){
    var answer = true;

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

더 생각해보기

왜 처음에 틀렸지? => 모든 경우의 수를 고려하지 않음...
맨 처음에 )가 오는 경우, )일 때는 pop을 할 필요가 없음(넣지를 않으니까)을 간과함.

참고사항

stack

profile
happy

0개의 댓글