본 포스팅은 java로 작성되었습니다.
요 며칠간 스택에 집중해서 풀고 있다.
이 문제를 예전에 푼 적이 있었는데, 그 때는 for문을 이용해서 풀었었다.
이번에는 스택의 관점에서 바라보자!
일단, 문자열을 순회하면서 같은 문자가 붙어있는 지를 체크한다는 점에서 스택을 떠올릴 수 있었다.
현재 문자와 스택의 최상단에 있는 문자를 비교해서 같다면 해당 문자를 제거하고 아니라면 그대로 스택에 push하면 되는 문제였다.
-문자열을 순회하면서..
--if(스택이 Empty) -> 스택에 push
--else (스택이 Empty가 아니면서, 최상단에 있는 문자가 현재 문자와 동일하다면) -> 스택에서 꺼내기
-문자열 순회가 끝난 시점에서 스택이 Empty면 1(모두가 짝지어짐) Empty가 아니면 0을 반환한다.

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;
}
}