짝지어 제거하기

이리·4일 전
0

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

문제설명

  • 주어진 파라미터: String s
  • 반환값: int
  • 문자열에 앞뒤로 2개가 동일한 알파벳이면 문자를 이어 붙인다.
  • 반복해서 수행하고, 모든 문자열이 지워진다면 true → 1, 아니면 false → 2 return

풀이방식

  • 스택을 활용해서 풀면 될거같다.
  • 차례대로 스택에 추가하고 들어오는 값과 stack의 peek가 같으면 둘다 제거
  • stack이 남아 있다면 0, 비어있다면 1 return

코드

import java.util.*;

class Solution
{
    public int solution(String s)
    {
        int answer = 0;
        Stack<Character> st = new Stack<>();
        st.add(s.charAt(0));
        
        for(int i = 1; i < s.length(); i++){
            if(!st.isEmpty() && st.peek() == s.charAt(i)){
                st.pop();
            }else{
                st.add(s.charAt(i));
            }
        }
        
        
        return st.isEmpty()? 1 : 0;
    }
}

회고

stack에서 pop()을 할때는 항상 stack이 비어있는지 확인을 해줘야한다.

확인을 하지 않고 pop()을 실행하면 EmptyStackException이 발생하게된다.


참 쉽쥬잉~?

0개의 댓글