View

😃 || 정리
1. 처음에는 '중복되는' 숫자들을 제거한 배열을 리턴해주는 줄 알고 Set을 써서 구현했었다. 알고보니 '중복되는'이 아닌 ' 연속되는' 숫자임을 깨닫고 다시 풀이 시작
2. 그렇다면 연속되는 숫자는 어떻게 구분해줄까를 다시 고민했다.
일단 연속되는 숫자 중 가장 먼저 나타나는 숫자를 기준으로 배열에서 값을 가져온 후 기준값과 배열에서 가져온 값이 같지 않을 때, 배열에서 가져온 값을 return 배열에 넣어주기로 했다.
그런데 return 배열의 크기가 정해지지 않았기 때문에 나는 ArrayList를 사용하기로 했다.
그 후 다시 ArrayList를 int배열로 바꿔서 return 했다.
😃 || 풀이 방법
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
ArrayList<Integer> arrList = new ArrayList<Integer>();
int arrLen = arr.length;
int identifier = arr[0];
arrList.add(arr[0]);
for(int i=1; i< arrLen; i++){
if( identifier != arr[i]){
identifier = arr[i];
arrList.add(arr[i]);
}
}
answer = new int[arrList.size()];
for(int i=0; i< arrList.size(); i++){
answer[i] = (int)arrList.get(i);
}
return answer;
}
}
'Algorithm' 카테고리의 다른 글
| 프로그래머스 :: 영어 끝말잇기 (Java) 알고리즘 풀이 (0) | 2021.05.17 |
|---|---|
| LeetCode :: Valid Anagram (Java) (0) | 2021.04.30 |
| 프로그래머스 :: 이상한 문자 만들기 (Java) 알고리즘 /split (String regex, int limit) 정리 (0) | 2021.04.24 |
| LeetCode :: Happy Number (Java) (0) | 2021.03.06 |
| 프로그래머스 :: 카펫 (Java) 알고리즘 (0) | 2021.02.28 |
reply