프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
12973, 짝지어 제거하기
📌 [ 난이도 : LEVEL 2 ]
이번 문제는 Stack 을 활용하여 풀이를 진행했다.
📚 Process
초기화 및 선언
구현
: 문자가 같은 문자를 제거하는 방법을 계속 진행해야 한다. 이것을 문자를 하나씩 넣는데 넣기 전에 이전에 들어있는 것을 하나씩 확인하면서 같으면 제거하고 아니면 add 해주는 방식의 stack 을 활용해서 풀이하면 된다.
1. stack 이 비어있으면 넣어준다.
2. 비어있지 않다면 직전에 들어간 것과 비교한다.
2-1. 넣어야 하는 문자와 직전에 들어간 문자가 같다면 이전에 들어간 문자를 빼고 넣어주지 않는다.
2-2. 같지 않다면 그냥 넣어준다.
3. stack 의 크기를 확인한다.
✅ 전체 코드
import java.util.*;
class Solution
{
public int solution(String s)
{
Stack<Character> stack = new Stack<>();
for(char c : s.toCharArray()) {
// 비어있으면 무조건 insert
if(stack.isEmpty()) {
stack.add(c);
continue;
}
// 마지막에 들어있는 것과 같다면
if(stack.peek().equals(c)) {
stack.pop();
continue;
}
stack.add(c);
}
return (stack.isEmpty()) ? 1 : 0;
}
}