본문 바로가기

알고리즘/프로그래머스

[JAVA]프로그래머스_짝지어 제거하기

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

 

문제유형 : 구현

 

풀이방식 : 스택

  • 문자열의 길이 : 1,000,000이하의 자연수 이기때문에 for문을 사용하게되면 시간초과가 나온다.

 

소스코드

import java.util.*;
class Solution
{
    public int solution(String s)
    {
        int answer = -1;
        int sLength = s.length();
        Stack<Character> stack = new Stack<>();
        stack.push(s.charAt(0));
        for(int i=1; i<sLength; i++){
            char nowChar = s.charAt(i);
            if(stack.empty()){
                stack.push(nowChar);    
            }else{
                if(stack.peek()==nowChar){
                    stack.pop();  
                } else {
                    stack.push(nowChar);    
                }     
            }
        }
        if(stack.size()==0){
            answer = 1;    
        }else {
            answer = 0;
        }
        System.out.println(stack.size());
        return answer;
    }
}