반응형
12906번 문제
코딩테스트 연습 - 같은 숫자는 싫어 | 프로그래머스 (programmers.co.kr)
풀이
✔ 입력값으로 들어오는 배열에는 0~9 까지의 숫자만 들어올 수 있다.
✔ 앞의 수와 비교해서 중복된 값이 아닌 경우만 탐색한다.
- 1번 풀이
public int[] solution(int[] arr) {
List<Integer> list = new ArrayList<Integer>();
int saveNum = -1;
for (int a : arr) {
if (saveNum != a) list.add(saveNum = a);
}
int[] newArr = new int[list.size()];
for (int i = 0; i < newArr.length; i++) {
newArr[i] = list.get(i);
}
return newArr;
}
배열을 순차대로 탐색하며 이전 값과 중복되지 않은 값만 list에 담아둡니다.
탐색이 끝난 후 list를 int array 로 변환 후 반환합니다.
✔ 테스트 케이스 실행 속도: 0.04ms
✔ 효율성 테스트: 23~26ms
- 2번 풀이
public int[] solution(int[] arr) {
List<Integer> list = new ArrayList<Integer>();
int saveNum = -1;
for (int a : arr) {
if (saveNum != a) list.add(saveNum = a);
}
return list.stream().mapToInt(Integer::intValue).toArray();
}
list에 담는 부분은 1번 풀이와 반환할 때 stream을 활용하여 반환했습니다.
stream을 사용한 만큼 수행속도 측면에서는 효율성이 떨어집니다.
✔ 테스트 케이스 실행 속도: 1.5 ~ 2.5ms
✔ 효율성 테스트: 31~34ms
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 가운데 글자 가져오기 java (0) | 2022.06.20 |
---|---|
프로그래머스 - 헤비 유저가 소유한 장소 MySQL/Oracle (0) | 2022.06.17 |
프로그래머스 - 두 정수 사이의 합 java (0) | 2022.06.14 |
프로그래머스 - 문자열 내 p와 y의 개수 java :: 12916 (0) | 2022.06.10 |
프로그래머스 - 이상한 문자 만들기 java :: 12930 (0) | 2022.02.12 |