반응형
문제분석
배열 arr의 숫자들이 연속적으로 나타내는 숫자면 제거하고 남은수들을 리턴하는 문제이다.
언뜻보면 중복을 제거 하는것같아서 중복제거 배열인 Set을쓰면 큰일난다. 중복이아니라 연속된숫자다.
예제 1번만 보면 알수있다.
연속된 숫자, 즉 arr의 숫자들을 하나씩넣을때, 넣을숫자와 배열의 맨마지막 숫자가 같으면 안넣으면된다.
문제풀이
Stack을 사용해서 풀수있다. 하지만, 필자는 list의 마지막 원소를 반환해주는 list.getLast()를 사용했다.
list.getLast 원소와 arr[i]가 같지않으면 넣고, 같으면 넣게 구현했다.
그리고 list를 int[]형으로 변환하면 끝이다. 필자는, 변환하는법을 구글링해서 넣었지만,
list를 반복순회해 int[]에 넣어도 비슷한 속도를낸다. 그냥 가독성차이인것같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
LinkedList<Integer> list = new LinkedList<Integer>();
list.add(arr[0]);
for(int i=1; i<arr.length;i++){
if(arr[i]!=list.getLast()){
list.add(arr[i]);
}
}
Integer[] listing = list.toArray(new Integer[list.size()]);
int []answer =Arrays.stream(listing).mapToInt(Integer::intValue).toArray();
return answer;
}
}
|
cs |
반응형
'알고리즘 > 프로그래머스 Level1' 카테고리의 다른 글
[프로그래머스,자바] Level1: 두 정수 사이의 합 (0) | 2021.08.18 |
---|---|
[프로그래머스,자바] Level1: 나누어 떨어지는 숫자 배열 (0) | 2021.08.18 |
[프로그래머스,자바] Level1: 다트게임 (0) | 2021.08.17 |
[프로그래머스,자바] Level1: 비밀지도 (0) | 2021.08.15 |
[프로그래머스,자바] Level1: 가운데 글자 가져오기 (0) | 2021.08.15 |