[프로그래머스/Java] 같은 숫자는 싫어

Moon·2022년 9월 16일
0
post-thumbnail

🙂 문제

Level.1 : 같은 숫자는 싫어 (스택/큐)


💡풀이

바로 전 값을 담아 둘tempNum이라는 변수를 선언해주고 문제에서 주어진 원소의 조건인 0~9 범위 밖의 값을 넣어둔다. 범위 안의 값이면 문제에서 요구하는 조건 (연속적으로 나타나는 숫자 제거)을 위한 비교가 불가능하기 때문이다.

if문과는 상관없이 tempNum에 num을 넣어준다. 반복문을 돌 때 tempNum에는 이전의 숫자가 들어있기 때문에 tempNum != num인 경우에만 tempList에 저장해준다.

  • 예를 들어, [1,1,3] 이라는 배열이 주어지는 경우를 생각해보자.
    처음 for문을 돌 때 tempNum = 10 , num = 1이기 때문에 1이 tempList에 추가되고 tempNum = 1이 된다. 하지만 두 번째 for문에서는 tempNum = 1, num = 1이기 때문에 tempNum = num 이므로 tempList에 저장되지 않고 tempNum에는 1을 넣는다.
import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        ArrayList<Integer> tempList = new ArrayList<Integer>();
        int tempNum = 10; 
        for(int num : arr) {
            if(tempNum != num) {
                tempList.add(num);
            }
            tempNum = num;
        }

        int[] answer = new int[tempList.size()];
        for(int i = 0; i < answer.length; i++) {
            answer[i] = tempList.get(i);
        }

        return answer;
    }
}

tempList.get(i)는 해당 인덱스의 Integer 객체를 return한다. int형으로 변환하기 위해서는 intValue()를 해줘야 하지만 JDK 1.5부터는 자바 컴파일러가 오토 박싱과 언박싱 처리를 해주기 때문에 자동으로 변환된다.

profile
매일 성장하는 개발자 되기😊

0개의 댓글