본문 바로가기
코딩테스트/프로그래머스 1단계

프로그래머스 1단계 - 같은 숫자는 싫어

by SICDev 2021. 4. 12.
반응형

https://programmers.co.kr/learn/courses/30/lessons/12906

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

 

 

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        //만약 arr값이 {1,1,0,3,3,3}이면 {1,0,3}으로 바꾼다...
            //arr 배열의 값을 stack에 쌓는다! 카카오 인형뽑기랑 똑같다...!
            //첫번째 인덱스 값을 스택에 쌓는다.
            //두번째 인덱스 값을 스택에 쌓으려고한다..근데! 스택에 들어있는 최상위값과 비교한다
            //두 값이 같다면 스택에 쌓지 않는다..
            //세번째 인덱스 값을 스택에 쌓으려고한다.. 두 값이 다르다.. 스택에 쌓는다.
            Stack<Integer> stack = new Stack<>();

            //arr의 배열만큼 반복문을 돌린다.
            for(int i=0; i<arr.length; i++){
                //먼저 스택이 비어있는지 아닌지 체크한다.
                //비어있다면 그냥 넣는다.
                if(stack.empty()){
                    stack.push(arr[i]);
                //스택에 어떤 값이 있다면
                }else{
                    //스택에 있는 값을 가지고와서 넣으려는 값과 비교한다.
                    //두 값이 같지 않다면 stack에도 넣는다.
                    if(arr[i] != stack.peek()){
                        stack.push(arr[i]);
                    }
                }
            }

            int[] answer = new int[stack.size()];
            for(int j=stack.size()-1; j>=0; j--){
                answer[j] = stack.peek();
                stack.pop();
            }

            return answer;
    }
}
반응형