알고리즘/프로그래머스

[프로그래머스] lv1. 같은 숫자는 싫어 [#스택]

SHIN SANHA 2023. 10. 26. 00:46
반응형

 

 

 


1. 출처


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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

시작 시간 : 오전 12시 28분

종료 시간 : 오전 12시 41분

---------------------------------

13분 경과

 

 


2. 설계 및 코드


 

문제이해

연속적으로 나오는 같은 수를 제거해주는 문제이다. 모든 수 중 연속 수를 제거해주는 것이 아니다.

 

 

입출력

arr / answer

[1,1,3,3,0,1,1] [1,3,0,1]
[4,4,4,3,3] [4,3]

 

 

설계

1. 스택에 arr를 순차적으로 넣는다.

2. 넣기 전 스택 가장 위에 있는 요소와 같은지 확인한다. 이 때 같으면 넣지 않는다.

3. int[] 반환형이기 때문에 stack을 그대로 반환할 수 없다. 변환 과정을 거쳐야 한다. stack이기 때문에 answer 마지막 인덱스부터 채워줘야 한다.

 

 

코드

import java.util.*;

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

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

        return answer;
    }
}

 

 

 

반응형