이번에 풀어본 문제는
프로그래머스 짝지어 제거하기 입니다.
import java.util.Stack;
class Solution
{
public int solution(String s)
{
int answer = 1;
int len = s.length();
Stack<Character> stk = new Stack<>();
for (int i = 0; i < len; i++) {
char c = s.charAt(i);
if(!stk.isEmpty() && stk.peek() == c) stk.pop();
else stk.push(c);
}
if(!stk.isEmpty()) answer = 0;
return answer;
}
}
2개의 연속된 문자를 제거하고 남은 문자열을 합친다는 규칙이 존재할 때, 주어진 문자열을 완전히 제거할 수 있다면 1, 아니면 0을 반환하는 문제입니다.
문자 단위로 하나씩 탐색하면서, 이전 문자와 같으면 pop연산, 다르면 push연산을 진행합니다.
입력된 문자열을 모두 탐색했을 때, 스택이 비어있다면 1, 값이 남아있다면 0을 반환하면 해결됩니다.
스택을 활용하는 문제였습니다.