종식당

[프로그래머스 lv.1] 같은 숫자는 싫어 본문

프로그래머스

[프로그래머스 lv.1] 같은 숫자는 싫어

종식당 2024. 10. 15. 21:28
728x90
반응형

 

https://school.programmers.co.kr/learn/courses/30/lessons/12906

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


  • 문제 설명
    입력으로 int형 배열 arr이 들어오고 이 배열에는 연속적으로 나타나는 숫자들이 있다. 이때 연속적으로 나타나는 숫자는 제거하고 남은 수들을 배열의 형태로 return 하면 되는 문제이다.

 

  • 제출 코드
import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        List <Integer> list = new ArrayList<>();
        int value = -1;
        
        for (int i = 0; i < arr.length; i++){
            if(arr[i] != value){
                list.add(arr[i]);
                value = arr[i];
            }
        }
        
        int [] result = new int[list.size()];
        
        for(int i = 0; i < list.size(); i++){
            result[i] = list.get(i);
        }
        return result;
    }
}

 

  • 코드 설명
    먼저 int 배열 arr에서 숫자 하나씩 처리를 해줄건데 list에 넣어서 넣을 때마다 이전 값과 확인을 할 거다. 만약 이전에 넣은 값과 이번에 확인하는 값이 같으면 연속적인 숫자이니까 넘어가고 다를 때만 list에 추가해 준다. 그리고 반환할 때는 int형 배열로 반환해야 하니 이 로직또한 처리해 주었다. 

    먼저 정수를 담을 ArrayList를 만들어주었다. 이전 값을 저장해주기 위한 변수 value를 하나 만들어준다. 초기화할 때는 아무 의미 없는 값 -1로 해주었다.
    그리고  arr배열을 for문을 통해 돌며 이 value값과 arr의 각 인덱스의 값과 같은지 확인해주었다. 값이 다르면 연속적인 숫자가 아니니까 list에 추가해 주었다. 이때는 list.add() 이런 형태로 사용할 수 있다. 그리고 value값을 바꿔준다. 

     list.size()를 통해 list의 크기를 구한 다음 이 크기 만큼의  int형 배열을 만들어준다.
    그 후 int형 배열에 list에 있는 값을 list.get()을 통해 하나하나 가져와 저장한다. 
728x90
반응형