알고리즘 (JAVA)/프로그래머스 알고리즘

[프로그래머스] level1.같은 숫자는 싫어 - 개발자 배찌

개발자 배찌 2022. 5. 12. 15:42
728x90

 

 

내가 헤맸던 부분은 문제를 제대로 읽지 않아서 였다.

 

배열 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