알고리즘(Algorithm)/프로그래머스(Programmers)

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

나아가는중 2021. 10. 26. 16:47
반응형

프로그래머스 같은 숫자는 싫어 - JAVA


문제 설명

  1. 배열 arr가 주어진다. 각 원소는 숫자 0부터 9까지로 이루어져 있다.
  2. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 retrun.

제한 사항

  1. 배열 arr의 크기 : 1,000,000 이하의 자연수
  2. 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

문제 풀이

  1. 이전 숫자와 같은지 비교하기 편하게 스택을 사용한다.
    • 스택이 빈경우와 스택의 맨위(이전 숫자)와 다른 경우 스택에 추가한다.
  2. 스택의 숫자들을 정답 배열로 옮겨 return.
    • 스택에 향상된 for문을 사용하면 스택 가장 아래 수 부터 탐색 가능하다.

소스 코드

import java.util.*;

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

        for (int n : arr) {
            if (stack.isEmpty() || stack.peek() != n) {
                stack.add(n);
            }
        }

        int[] answer = new int[stack.size()];
        int index = 0;
        for (int n : stack) {
            answer[index++] = n;
        }

        return answer;
    }
}
반응형