💁♀️ 링크
programmers.co.kr/learn/courses/30/lessons/12906
📃 문제
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다.
예를 들면,
-
arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
-
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
🐾 문제풀이
1. Temp ArrayList를 생성해서 arr[]의 첫번째 원소를 넣는다.
2. arr[i] 과 arr[i-1] 을 비교한다
-
같으면 continue, 다음 원소를 비교한다.
-
다르면 arr[i] 원소를 ArrayList에 넣는다.
3. Stream을 이용해서 ArrayList를 int[] 배열로 변환해준다.
여기서 arr[]의 첫번째 요소를 넣는 코드를 따로 기입할 필요없이 변수를 생성해서 비교하는 방법도 있다.
int temp= 10; // arr[0] 첫번째 원소가 무조건 list에 넣어진다.
for(int num : arr) {
if(temp!= num) {
tempList.add(num);
}
temp= num;
}
💻 코드
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
ArrayList<Integer> list = new ArrayList<>();
list.add(arr[0]);
for(int i=1; i<arr.length; i++){
if(arr[i-1] == arr[i]) continue;
list.add(arr[i]);
}
answer = list.stream().mapToInt(i -> i).toArray();
return answer;
}
}
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[프로그래머스] [Level1] 문자열 내림차순으로 배치하기 - Java (0) | 2020.12.29 |
---|---|
[프로그래머스] [Level1] 문자열 다루기 기본 - Java (0) | 2020.12.29 |
[프로그래머스] [Level1] 문자열 내 p와 y의 개수 - Java (0) | 2020.12.28 |
[프로그래머스] [Level1] 두 정수 사이의 합 - Java (0) | 2020.12.26 |
[프로그래머스] [Level1] 나누어 떨어지는 숫자 배열 - Java (0) | 2020.12.26 |