[JAVA] 같은 숫자는 싫어

NoHae·2025년 1월 5일
0

문제 출처

코딩테스트 연습 > 스택/큐 > 같은 숫자는 싫어
https://school.programmers.co.kr/learn/courses/30/lessons/12906

문제 설명

배열 arr가 주어지고 arr의 연속적으로 나타나는 숫자는 하나만 남기고 제거하라.

접근 방법

문제는 스택을 이용해서 간단하게 풀 수 있다. 스택에 배열의 요소를 집어넣고 peek()하여 다음 요소와 비교해서 다르면 집어넣으면 된다. 나는 나중에 return 할 배열에 쉽게 넣기 위해 스택에 넣을 때 arr의 뒤에서 부터 확인했다.(사실 어떻게 하던지 비슷하다.)

import java.util.*;

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

알게된 점

복습으로 다시 푼 문제이기 때문에 그렇게 어렵진 않은 문제였다. 처음에 큐를 사용하고 싶어서 큐를 사용해보려고 했지만 큐의 peek()는 맨 처음 넣었던 것을 보여주기 때문에 그냥 스택을 사용해서 풀었다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글