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

윤준혁·2024년 3월 27일

나의 풀이

import java.util.*;

class Solution {
    public int solution(String s) {
        int answer = 0;
        Stack<Integer> stack = new Stack<>();
        char[] c = s.toCharArray();
        
        for (int i = 0; i < c.length; i++) {
            if (stack.empty()) { // 1
                stack.push((int)c[i]);
            } else if (c[i] == stack.peek()) { // 2
                stack.pop();
            } else { // 3
                stack.push((int)c[i]);
            }
        }

        return answer = stack.empty() ? 1 : 0; // 4
    }
}

과정

  1. s를 char형태의 배열로 만든 c를 순회하며 stack이 비었을땐 push
  2. stack이 비지 않고, stack의 마지막 요소가 c의 [i]번째 요소와 같으면 pop
  3. stack이 비지 않고, stack의 마지막 요소와 c의 [i]번째 요소와 다르면 push
  4. 끝났을 때, stack이 비었으면 1, 비지 않았으면 0을 반환

다른 사람 풀이

import java.util.*;

class Solution
{
    public int solution(String s)
    {
        int answer = 0;
        Stack<Character> stack = new Stack<>();

        for(char c : s.toCharArray()){
            if(stack.size() == 0){
                stack.push(c);
            }
            else if(stack.peek() == c){
                stack.pop();
            }
            else{
                stack.push(c);
            }
        }


        return stack.size() > 0 ? 0 : 1;
    }
}

0개의 댓글