알고리즘/프로그래머스

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

정석이 2022. 2. 15. 20:28

 

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

 

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

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

programmers.co.kr

 

 

 

 

문제

 

 

 


 

스택 사용함

 

 

HashSet 사용할까 했는데 hashset은 get()으로 가져올 수 없는걸 알게됐다.~

 

 

스택 사용했는데 음~ 

 

for문으로 stack.pop() 해서 하나씩 배열에 저장할까 했는데

 

 

이렇게하면 stack은 Integer 형이고 answer[]는 int 형이라 저장이...안된다. 다 0으로 저장됨

 

 

그래서 for each문으로 stack을 읽어와서 넣어줘야한다.

 

 

 

코드

package Programmers;

import java.util.Stack;

public class HateSameNumber {
	public static void main(String[] args) {
		int arr[] = {1, 1, 3, 3, 0, 1, 1};
		
		System.out.println(solution(arr));
	}
	
	public static int[] solution(int []arr) {
        int[] answer;
        Stack<Integer> stack = new Stack<>();
        
        stack.push(arr[0]);
        for(int i = 1; i < arr.length; i++)
            if(stack.peek() != arr[i])
                stack.push(arr[i]);
        
        answer = new int[stack.size()];
        
        int index = 0;
        for(int i : stack)
            answer[index++] = i;
       
        return answer;
    }

}

 

 

 

 

 


 

다른 사람 풀이

 

 

 

 

 

 

 

arrayList 생성해서 앞 숫자 preNum과 넣으려는 수가 같이 않으면 리스트에 넣어준다.

 

 

 

리스트는 Integer 형이므로 answer[]에 저장할 때 .intValue()로 int화 해준다.

 

 

 

정석 풀이인듯!

 

 

 

 

 

 

 

 

이것도 마찬가지..! 근데 이건 리스트랑 비교를 안하고 배열 자체를 비교해서 넣어줬다.