문제
https://school.programmers.co.kr/learn/courses/30/lessons/12906
접근 방법 및 풀이
인수 arr에서 중복되는 숫자는 예측할 수 없으므로 ArrayList를 사용
arr의 숫자는 0에서 9 사이이므로 연속하는 숫자를 비교하기 위한 변수의 초기값은 -1로 설정
import java.util.ArrayList;
import java.util.List;
public class Q30_12906 {
public int[] solution(int []arr) {
int temp = -1;
List<Integer> list = new ArrayList<>();
for (int number : arr) {
if (temp != number) {
list.add(number);
temp = number;
}
}
return list.stream().mapToInt(item -> item).toArray();
}
}
정확성 테스트와 효율성 테스트 모두 통과 하였으나 효율성 테스트가 평균 32ms 소요
public class Q30_12906 {
public int[] solution(int []arr) {
// 결과 배열의 길이 구하기
int temp = -1;
int size = 0;
int arrLength = arr.length;
for (int i = 0; i < arrLength; i++) {
if (temp != arr[i]) {
size++;
temp = arr[i];
}
}
// 연속하는 숫제를 제외한 숫자를 배열에 추가
temp = -1;
int index = 0;
int[] answer = new int[size];
for (int number : arr) {
if (temp != number) {
answer[index] = number;
temp = number;
index++;
}
}
return answer;
}
}
ArrayList를 배열로 개선하면서 int에서 Integer로 변환하는 부분을 제거 후 효율성 테스트는 평균 14ms로 개선