알고리즘 풀이/프로그래머스

[level2] 프로그래머스 - 짝지어 제거하기(JAVA)

데롱디롱 2021. 9. 18. 22:51
728x90

 

 

[ 문제 풀이 ]

- 앞에서 부터 한 글자씩 스택에 넣는다.

- 단 스택의 제일 위(마지막에 넣은 글자)와 현재 글자가 같은 경우, 글자를 넣지 않고 스택에서 뺀다.

- 만약 스택이 비어있거나, 스택의 위에있는 문자와 다르다면, 스택에 글자를 넣는다.

- 다 처리한 후,
   스택이 비어있으면 1, 안 비어있으면 0을 리턴한다.

 

 

 

 

[ 전체 코드 ]

import java.util.Stack;

class Solution
{
    public int solution(String s)
    {
        Stack<Character> stack = new Stack<Character>();

        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);

            if (!stack.isEmpty() && ch == stack.peek())
                stack.pop();
            else
                stack.add(ch);
        }

        return stack.isEmpty() ? 1 : 0;
    }
}