내가 헤맸던 부분은 문제를 제대로 읽지 않아서 였다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은수들을 return 하는 함수를 완성해주세요.
연속적인 숫자는 모두 제거하라는 뜻인줄 알아서 계속 다르게 풀고있었다..
결국 이 문제도 다른 블로그를 참고하며 풀었다. level1 인데..뚜쉬뚜쉬......😣
풀이과정 1.
value 초기값을 -1로 지정해놓고, arr에 담긴 숫자들을 차례대로 하나씩 비교했다.
연속된 값이 같지 않을때는 ArrayList 형의 list에 add !!
list에 담긴 애들을 answer에 차례대로 넣었다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int value = -1;
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0; i<arr.length; i++){
if(value != arr[i]){
list.add(arr[i]);
value = arr[i];
}
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
풀이과정 2.
다른사람의 풀이를 참고했다. 연속된 값을 비교하는 부분은 같다.
return 하는 부분에서 ArrayList<Integer>형을 int[] 형으로 리턴하기위해서
list.stream().mapToInt(i->i).toArray();
이렇게 써준 부분이 특이했다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int value = -1;
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0; i<arr.length; i++){
if(value != arr[i]){
list.add(arr[i]);
value = arr[i];
}
}
return list.stream().mapToInt(i->i).toArray();
}
}
mapToInt 메서드
스트림을 IntStream으로 변환해주는 메서드.
java에서 스트림(stream)이란?
- 자바 8에서 추가한 스트림은 람다를 활용할 수 있는 기술 중 하나.
- 스트림은 '데이터의 흐름'. 배열 또는 컬렉션 인스턴스에 함수 여러개를 조합해서 원하는 결과를 필터링 하고
가공된 결과를 얻을 수 있다.
- 장점은 병렬처리가 가능하다는점 (multi-threading)
- 하나의 작업을 둘 이상의 작업으로 잘게 나눠서 동시에 진행하는 것을 병렬처리 라고 한다.
즉, 쓰레드를 이용해 많은 요소들을 빠르게 처리할 수 있다.
참고한 사이트!!
https://futurecreator.github.io/2018/08/26/java-8-streams/
Java 스트림 Stream (1) 총정리
이번 포스트에서는 Java 8의 스트림(Stream)을 살펴봅니다. 총 두 개의 포스트로, 기본적인 내용을 총정리하는 이번 포스트와 좀 더 고급 내용을 다루는 다음 포스트로 나뉘어져 있습니다. Java 스트
futurecreator.github.io
'알고리즘 (JAVA) > 프로그래머스 알고리즘' 카테고리의 다른 글
[프로그래머스] level1. 정수 제곱근 판별 - 개발자 배찌 (0) | 2022.05.12 |
---|---|
[프로그래머스] level1.자연수 뒤집어 배열로 만들기 - 개발자 배찌 (0) | 2022.05.12 |
[프로그래머스] level1. 제일 작은 수 제거하기 - 개발자 배찌 (0) | 2022.05.10 |
[프로그래머스] 포스팅 관련하여.. (0) | 2021.06.21 |
[프로그래머스] 인형뽑기 게임 문제풀이 (JAVA) (0) | 2021.06.14 |