JAVA언어의 기초/코딩테스트

[프로그래머스/Lv.1] 같은 숫자는 싫어 - JAVA

dong uk 2024. 2. 15. 17:29

문제

문제를 풀기 위해서 문제에 대한 분석

연속적으로 나타나는 숫자 하나만 남기고 전부 제거하려 한다는 점

제거되고 남은 수들을 반환할 때 원소들의 순서를 유지해야 하는 점

 

제한 사항

배열 원소의 크기는 0 <= i <=9

배열의 크기는 1,000,000 이하의 자연수

 

 

 

풀이

 

 

코드를 하나씩 뜯어보자

 

 

 

 

연속적으로 나타나는 숫자를 제거하게 되면

남은 숫자의 길이가 어떻게 변할지 모르기 때문에

가변 리스트인 ArrayList를 선언해 준다.

 

 

 

 

 

비교하기 위한 변수 value를 선언 함과 동시에

0보다 크거나 같고 9보다 작거나 같은 정수이기에 음수는 없다.

그렇기에 0과 겹치는 일이  없도록 하기 위해

value값을 -1로 초기화하였다.

 

 

 

 

 

그 후

for문에 입력받은 arr의 length의 길이만큼 루프 하면서

arr의 배열 값이 value값과 같지 않으면 

미리 선언하였던 ArrayList에 값을 하나씩 넣어준다.

이후부터 arr [i]에 value값이 저장되어 있어

비교해 보고 숫자가 다른 경우에만 

가변리스트인 ArrayList에 값이 저장된다.

 

 

 

 

 

마지막으로  일반배열인 answer로 배열로 return 해야 하기에

가변 리스트인 ArrayList를 일반배열인 answer로 변환시켜야 한다.