[프로그래머스] 쇠막대기

2020. 3. 31. 15:46프로그래머스/LEVEL 2

import java.util.*;

class Solution {
    public int solution(String arrangement) {
        int answer = 0;
        
        Stack<Character> bracket = new Stack<>();
        
        for(int i=0; i<arrangement.length(); i++){
          if(arrangement.charAt(i) == '('){
              bracket.push('(');
          }
            else{
                if(arrangement.charAt(i-1)==')' && i!=0){
                    answer++;
                    bracket.pop();
                    
                }
                else{
                bracket.pop();
                answer += bracket.size();
                    
                }
            }
        }
        
        return answer;
    }
}

스택/큐 영역에 있어서 위와같이 풀었지만 변수하나로 푸는게 훨씬 빨랐다. (아래는 그냥 변수로 푼것)

class Solution {
    public int solution(String arrangement) {
        int answer = 0;
        int count = 0;
        
        for(int i=0; i<arrangement.length(); i++){
            if(arrangement.charAt(i)=='('){
                count ++;
            }else{
                if(arrangement.charAt(i-1)==')' && i !=0){
                    answer ++;
                    count --;
                }else{
                    count --;
                    answer += count;
                }
            }
        }
        return answer;
    }
}