[프로그래머스, 12973] 짝지어 제거하기 (java)
Problem Solving/Programmers

[프로그래머스, 12973] 짝지어 제거하기 (java)

728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

728x90

메모리: 63 MB, 시간: 62.68 ms

사용 알고리즘: 자료구조, 스택

 

문자열의 문자들을 하나씩 스택에 넣는다.

만약 스택의 바로 위에 있는 문자가 현재 스택에 넣으려는 문자와 같다면, 알파벳이 2개 붙어있는 짝을 찾은 것이므로 pop을 통해 짝지어 제거하기를 해준다.

그게 아니라면 해당 문자를 push 해준다.

import java.util.*;

class Solution
{   
    public int solution(String s)
    {
        char[] arr = s.toCharArray();
        
        // 문자를 하나씩 확인하며, 스택의 맨 위에 같은 문자가 있으면 pop, 아니라면 push
        Stack<Character> stack = new Stack<>();
        
        for(int i = 0; i < arr.length; i++) {
            if(stack.isEmpty() || stack.peek() != arr[i]) stack.push(arr[i]);
            else stack.pop();
        }
        
        int answer = 0;
        if(stack.size() == 0) answer = 1; // 스택이 비어있다면 짝지어 제거하기가 성공한 것

        return answer;
    }
}
728x90