https://programmers.co.kr/learn/courses/30/lessons/12906
방법 1: 내가 낸 답안. 스 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.util.*;
public class Solution {
public int[] solution(int[] arr) {
Stack<Integer> stack = new Stack<Integer>();
// stack에 배열 첫번째 요소 미리 추가
stack.push(arr[0]);
// 두번째 배열 요소부터 반복문
for (int i = 1; i < arr.length; i++) {
// 가장 위에 있는 스택 요소와 일치하지 않으면 추가
if (stack.peek() != arr[i]) {
stack.push(arr[i]);
}
}
int[] answer = new int[stack.size()];
for (int i = answer.length - 1; i >= 0; i--) {
answer[i] = stack.pop();
}
return answer;
}
}
Colored by Color Scripter
|
방법 2: 더 좋은 다른분 답안. 리스트 사용과 변수 할당
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
ArrayList<Integer> tempList = new ArrayList<Integer>();
// preNum에 배열에 들어갈 수 있는 최대의 숫자보다 더 큰값을 대입
int preNum = 10;
for(int num : arr) {
// preNum과 일치하지 않으면 추가
if(preNum != num)
tempList.add(num);
// preNum = 현재 숫자
preNum = num;
}
int[] answer = new int[tempList.size()];
for(int i=0; i<answer.length; i++) {
answer[i] = tempList.get(i).intValue();
}
return answer;
}
}
Colored by Color Scripter
|
배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수
방법 2는 문제에서 주어진 조건을 적절히 사용한 답안이었다.
원소 최대크기가 9 이므로, preNum을 10으로 초기화 시켜주면
나처럼 배열 첫번째 요소를 먼저 추가해서 반복문 인덱스를 조정해주지 않아도 된다.
그리고 가장 최근 값을 간단한 int 로 할당해줬기 때문에
나처럼 일일이 stack.peek() 으로 불러오지 않아도 된다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스]연습문제 : 두 정수 사이의 합 (level 1) (0) | 2019.11.06 |
---|---|
[프로그래머스]연습문제 : 나누어 떨어지는 숫자 배열 (level 1) (0) | 2019.11.06 |
[프로그래머스]연습문제 : 가운데 글자 가져오기 (level 1) (0) | 2019.11.06 |
[프로그래머스]연습문제 : 2016년 (level 1) (0) | 2019.11.05 |
[프로그래머스]정렬: H-Index (level 2) (0) | 2019.11.05 |
댓글