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

이한솔·2023년 10월 4일
0

프로그래머스_레벨1

목록 보기
24/65
post-thumbnail

✨️ 문제 설명

: 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

제한사항

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

-> 자세한 내용 보러가기

✨️자바 풀이

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        //스택 사용
        Stack<Integer> stack = new Stack<>();
        for(int num : arr){
            if(stack.isEmpty() || stack.peek() != num){
                stack.push(num);
            }
        }
        
        int[] answer = new int[stack.size()];
        
        for(int idx = stack.size()-1; idx >= 0; idx--){
            answer[idx] = stack.pop();
        }
        

        return answer;
    }
}

풀이 설명

: 스택 / 큐 문제여서 스택으로 풀이하였다.
: 스택이 비어있거나, 가장 위의 값과 같지 않을 경우에만 스택에 추가하면, 여러 중복되는 숫자가 한 번만 스택에 추가된다.
: 스택은 선입후출이므로, 배열의 마지막부터 0까지 반대로 추가해서 반환하였다.
profile
개인 공부용

0개의 댓글