https://programmers.co.kr/learn/courses/30/lessons/12906
스택 사용함
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 |