프로그래머스 - 짝지어 제거하기

주효은·2025년 7월 23일
0

프로그래머스 - 짝지어 제거하기

본 포스팅은 java로 작성되었습니다.

요 며칠간 스택에 집중해서 풀고 있다.
이 문제를 예전에 푼 적이 있었는데, 그 때는 for문을 이용해서 풀었었다.

이번에는 스택의 관점에서 바라보자!


1. 접근 방법

일단, 문자열을 순회하면서 같은 문자가 붙어있는 지를 체크한다는 점에서 스택을 떠올릴 수 있었다.
현재 문자와 스택의 최상단에 있는 문자를 비교해서 같다면 해당 문자를 제거하고 아니라면 그대로 스택에 push하면 되는 문제였다.

-문자열을 순회하면서..
--if(스택이 Empty) -> 스택에 push
--else (스택이 Empty가 아니면서, 최상단에 있는 문자가 현재 문자와 동일하다면) -> 스택에서 꺼내기

-문자열 순회가 끝난 시점에서 스택이 Empty면 1(모두가 짝지어짐) Empty가 아니면 0을 반환한다.

2. 최종 코드

import java.util.ArrayDeque;

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

        for (char c : s.toCharArray()) {
            if (!stack.isEmpty()) {
                if (stack.peek() != c) {
                    stack.push(c);
                } else {
                    stack.pop();
                }
            } else {
                stack.push(c);
            }
        }

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

0개의 댓글