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

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/12973

문제 풀이

연쇄적으로 짝지어 지면 제거하는 logic의 경우 stack으로 구현하면 비교적 간단하게 풀린다고 생각한다. stack이 비어있다면 push 해주며, stack.peek()와 그 다음 단어가 같다면 맨꼭대기를 pop해주면 되고, 아니라면 push 해주면된다.

코드

import java.util.*;

class Solution
{
    public int solution(String s)
    {
        int answer = 0;
        String [] arr = s.split("");

        Stack<String> st = new Stack();


        for(int i=0; i<arr.length; i++){
            if(st.size()==0){
                st.push(arr[i]);
                continue;
            }
            
            if(arr[i].equals(st.peek())){
                st.pop();
                
            }else{
                st.push(arr[i]);
            }
        }

        if(st.size()==0){
            answer=1;
        }else{
            answer=0;
        }
        return answer;
    }
}

좋은 웹페이지 즐겨찾기