[Programmers]-짝지어 제거하기

이번 프로그래머스 문제는 짝지어 제거하기 입니다.

처음에 StringBuffer로 replace로 풀어보려했다. 그냥 머리가 나빴나보다. 괜히 스택, 큐, 좋은게 좋은거다.

문제 풀이

비어있을때 넣고 아니면 peek으로 비교로 pop, push 하면 끝.

스택으로 푸니 너무 쉬웠다. 5분도 안걸린 정도.. 문자열로 할 때 시간 초과가 너무 나서 시간 버렸다.

문제풀이

  • Stack을 이용해 푼다.
import java.util.Stack;

class Solution
{
    public int solution(String s)
    {
        int answer = 0;

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        Stack<Character> stack = new Stack<Character>();
    
        for(int i=0;i<s.length();i++){
            
            if(stack.empty()){//비어있으면
                stack.push(s.charAt(i));//그냥 넣기만한다
            }
            else{
                if(stack.peek().equals(s.charAt(i))){//peek으로 top을 조회해서 비교한다
                    stack.pop();//같으면 빼낸다
                }
                else{
                    stack.push(s.charAt(i));//다르면 푸쉬한다.
                }
            }
        }    
        return answer = stack.empty() ? 1 : 0;//비어있으면 1, 아니면 0
    }
}


욕나올 정도로 쉽다.

  • peek() : 스택의 pop하면 나올 정보를 가져온다.
  • pop() : 스택의 top 정보를 빼낸다.
  • push() : 스택의 정보를 넣는다.
  • Empty() : 비어있는지 알 수 있다. return Boolean형태(비었으면 true)

일단 이정도만 정리했다.