[Coding Test] 프로그래머스 JAVA 같은 숫자는 싫어 - 스택

LeeSeungEun·2023년 5월 9일
0

Coding Test

목록 보기
2/38

1. 문제

2. 코드

import java.util.*;

public class Solution {
    public int[] solution(int[] arr) {
        Stack<Integer> stack = new Stack<Integer>();
        for (int i = 0; i < arr.length; i++) {
            if (stack.isEmpty()) {
                stack.push(arr[i]);
            } else if (arr[i] == (Integer) stack.peek()) {
                continue;
            } else {
                stack.push(arr[i]);
            }
        }
        int[] answer = new int[stack.size()];
        int idx = stack.size() - 1;
        while (!stack.isEmpty()) {
            answer[idx] = stack.pop();
            idx--;
        }
        return answer;
    }
}

3. 풀이

  • Stack 클래스는 제네릭 클래스이므로, 타입 파라미터를 명시해주어야 한다.
Stack<Integer>
  • Stack 클래스는 배열 형태로 반환할 수 없으므로, Stack에서 값을 꺼내어 배열에 저장해야 한다. 따라서 Stack에서 pop() 메서드를 호출하여 값을 꺼내어 배열에 저장힌디.
  • Stack에서 꺼낸 값을 역순으로 저장해야 하므로, 배열에 저장할 때 역순으로 저장해야 한다. 따라서 인덱스 변수를 선언하고, while 루프를 사용하여 값을 꺼내어 배열에 저장한다.

4. 링크

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

0개의 댓글