문제 설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
입출력 예 #1,2문제의 예시와 같습니다.
문제 해결
import java.util.ArrayList; public class Solution { public int[] solution(int []arr) { int[] answer = {}; ArrayList<Integer> arrayList = new ArrayList<>(); int temp = -1; for(int i=0; i<arr.length; i++){ if(temp!=arr[i]){ temp=arr[i]; arrayList.add(arr[i]); } } answer = new int[arrayList.size()]; for(int i=0; i<arrayList.size(); i++){ answer[i] = arrayList.get(i); } return answer; } }
문제핵심은 기존변수에 담아서 다음값과 비교 후에 같지 않으면 입력
-> stream사용해서 int배열로 바꾸는 것보다 for문 한번더 쓰는게 효율성에서는 더 높게 점수받앗음
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.