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

Android Chen·2021년 10월 29일
0

문제설명

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

구현방법

  • 처음 배열로 접근하여 StringBuffer로 2번 연속되는 문자를 제거했으나 효율성에서 실패하여 스택을 사용하는 것으로 변경
  • 스택이 비어있으면 스택에 문자를 넣어주고 스택이 비어있지 않으면 스택의 마지막 문자와 현재 문자를 비교, 같으면 스택의 마지막 문자를 꺼내고 다르면 현재 문자를 스택에 push함

코드

import java.util.*;
class Solution
{
    public int solution(String s)
    {
       Stack<Character> st = new Stack<>();
        for(int i=0;i<s.length();i++){
            if(st.isEmpty()){
                st.push(s.charAt(i));
            }
            else{
                if(st.peek()==s.charAt(i)){
                    st.pop();
                }
                else{
                    st.push(s.charAt(i));
                }
            }
        }
        if(st.isEmpty()){
            return 1;
        }
        else{
            return 0;
        }
      
    }
}
profile
https://github.com/Userz1-redd

0개의 댓글