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화 해준다.
정석 풀이인듯!
이것도 마찬가지..! 근데 이건 리스트랑 비교를 안하고 배열 자체를 비교해서 넣어줬다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 두 정수 사이의 합 for JAVA (0) | 2022.02.17 |
---|---|
[프로그래머스] 나누어 떨어지는 숫자 배열 for JAVA (0) | 2022.02.16 |
[프로그래머스] 가운데 글자 가져오기 for JAVA (0) | 2022.02.14 |
[프로그래머스] 2016년 for JAVA (0) | 2022.02.14 |
[프로그래머스] 카펫 for JAVA _ 완전 탐색 알고리즘 (0) | 2022.02.13 |