https://programmers.co.kr/learn/courses/30/lessons/12906?language=java
문제 분석
- 배열(arr)에 연속적으로 나타나는 숫자를 하나만 남기고 전부 제거한다.
- list를 사용하여 중복되지 않는 수를 add하고 정답 배열(answer)에 list의 값들을 추가한다.
문제 풀이
1. idx 변수를 통해 반복되어 나오는 숫자 중 첫 번째 인덱스를 나타낸다.
2. idx2 변수를 통해 반복되어 나오는 첫 숫자를 제외한 나머지 인덱스를 나타낸다.
3. while문을 통해 전체 배열의 길이만큼 탐색 후 중복되지 않는 숫자들만 list에 넣어준다.
4. list의 숫자들을 정답 배열(answer)에 넣고 출력한다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
ArrayList<Integer> list = new ArrayList<>();
int idx = 0;
int idx2 = 1;
while(true){
if(idx>=arr.length || idx2>=arr.length){
list.add(arr[arr.length-1]);
break;
}
if(arr[idx]==arr[idx2]){
idx2++;
continue;
}
list.add(arr[idx]);
idx = idx2;
idx2 = idx+1;
}
int[] answer = new int[list.size()];
for(int i=0;i<list.size();i++){
answer[i] = list.get(i);
}
return answer;
}
}
'Algorithm > programmers' 카테고리의 다른 글
programmers [1차] 다트 게임 (0) | 2022.02.17 |
---|---|
programmers 문자열 내 마음대로 정렬하기 (0) | 2022.02.17 |
programmers 가운데 글자 가져오기 (0) | 2022.02.16 |
programmers 나누어 떨어지는 숫자 배열 (0) | 2022.02.16 |
programmers 두 정수 사이의 합 (0) | 2022.02.16 |