본문 바로가기
코딩테스트 연습

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

by 밝지 2023. 3. 7.
728x90
반응형

문제

 

 

풀이

핵심은 stack을 이용하는 것이다. 스택을 만들어서 스택이 비어있지 않으면 하나씩 꺼내어 String s의 한 글자와 비교하여 같으면 스택에서 빼내고, 다르면 스택에 다시 집어넣는다. 이 작업을 String s를 모두 돌며 반복했을 때 스택에 남은 글자가 없으면 모두 짝지어 제거한 것이므로 1을 리턴, 아니면 제거하지 못한 것이므로 0을 리턴한다.

import java.util.Stack;

class Solution
{
    public int solution(String s)
    {
        int answer = -1;
        Stack<Character> stack = new Stack<>();
        
        for (int i=0; i<s.length(); i++) {
            char c = s.charAt(i); // String s의 글자 하나씩 잘라(c)
            if (!stack.isEmpty() && stack.peek() == c) {	
            	//스택이 비어있지 않은 경우 하나를 꺼내어 비교해서 같으면
                stack.pop(); //스택에서 제거
            } else {
            	//다르면 스택에 넣는다.
                stack.push(c);
            }
        }
		//끝까지 반복한 뒤 스택이 비어있다 == 모두 짝지어 제거했다.
        answer = (stack.size() == 0) ? 1 : 0;
        return answer;
    }
}
728x90
반응형