Solution 1) 내 풀이
import java.util.Arrays;
import java.util.Stack;

class Solution {
    public int[] solution(int[] arr) {
        Stack<Integer> stk = new Stack<>();

        for (int i = 0; i < arr.length; i++) {
            if (stk.isEmpty()) {
                stk.add(arr[i]);
            } else if (!stk.isEmpty() && stk.peek() == arr[i]) {
                stk.pop();
            } else if (!stk.isEmpty() && stk.peek() != arr[i]) {
                stk.push(arr[i]);
            }
        } if (stk.isEmpty()) {
            return new int[] {-1};
        } stk.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

코드 및 문제 리뷰

 

0과 1로만 이루어진 문자열 arr이 있다. 이를 이용해 새로운 배열 stk 을 만드려 한다.

이때의 조건으로

  • stk 배열이 비어있다면 arr[i]의 요소를 추가 하고 i++;
  • stk 배열이 비어있지 않고 마지막 요소가 arr[i]와 같다면 stk의 요소를 제거 한 뒤 i++;
  • stk 배열이 비어있지 않고 마지막 요소가 arr[i]와 같지 않다면 stk에 요소를 추가 한 뒤 i++;
  • stk 배열을 반환, 단 배열이 비어있다면 -1 요소가 담긴 배열을 반환

이렇게 주어져있다.

 

Stack 문제로 위의 조건 그대로만 구현해내면 되는 연습문제였다.

 

+ Recent posts