프로그래머스 같은숫자는싫어

HyunHwa Cho·2022년 7월 5일
1

오늘의 알고리즘 문제는 프로그래머스 같은숫자는 싫어이다.!

문제는 간단하다.
int 배열이 주어지며 연속으로 같은 숫자가 나오면 같은숫자 하나만 남기고 모두 제거한 배열을 리턴하면 된다.

input : arr[] = {1,1,1,3,3,2,2,1,1}
output : answer[] = {1,3,2,1}

import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
   public static int[] solution(int[] arr) {
        ArrayList<Integer> answerList = new ArrayList<>();  // 정답을 닮을 ArrayList 선언
        int[] answer = {};  //정답을 담은 ArrayList로 부터 변환시켜줄 answer 선언
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] != arr[i + 1])
                answerList.add(arr[i]);  
                // for문을 이용하여 배열의 앞뒤요소를 비교 하여 다른경우 앞의 요소를 추가
                if (i == arr.length - 2) {
                    answerList.add(arr[arr.length - 1]);
                    //마지막 전과 마지막 요소가 서로 다를경우를 대비해 if문 추가
                }
        }
            answer = answerList.stream()
                    .mapToInt(Integer::intValue)
                    .toArray();
                    //ArrayList를 Array로 변환
        return answer;
    }
}

이번 문제도 그리 난이도가 높지않은 문제였는데 중괄호 위치때문에 꽤나 애를먹엇다.. 중괄호위치에 따라 정답이 바뀔수있으니 디버깅할때나 오류 찾을때 유의하자.

이문제를 처음 풀때 List의 contains 를 사용할까 햇지만 이경우 모든 중복을 제거하는 것이 아니라 연속된 숫자의 중복을 제거하는 것으로 반복문을 통해서 해결하였다.!

profile
개발 공부 및 기록용 블로그 입니다.

0개의 댓글