Level1. 같은 숫자는 싫어
문제설명 )
풀이Code )
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int listCnt = 0; // list 가 담겨질 index 카운트
ArrayList<Integer> list = new ArrayList<>(); // 비교할 값들을 담을 list
list.add(arr[0]); // 초기에 arr 첫번째 인덱스의 값 넣어주기
for(int i=1; i<arr.length; i++) { // for 문 사용하여 list 에 이미 들어있는 값과 현재 arr 값 비교
if (list.get(listCnt) == arr[i]) {
arr[i] = -1; // 중복되는 값일 경우 arr 배열값 -1로 바꿔주기
}
else if (arr[i] != -1) { // arr 값이 -1이 아니고 중복되는 숫자가 아닐경우 list 에 담기
list.add(arr[i]);
listCnt++; // list 에 값을 담아줬으니까 카운트
}
}
int[] answer = new int[list.size()]; // answer 배열의 길이는 list의 사이즈
for (int i=0; i<answer.length; i++) { //for 문 사용하여 list에 있는 값 answer 배열에 담기
answer[i] = list.get(i);
}
return answer;
}
}
풀이법 )
- 값들을 비교하기 편하게 ArrayList 컬렉션 사용
- for문 사용하여 arr배열의 값과 초기에 담아놓은 list의 값 비교하여 중복될경우 arr배열의 값 -1로 변환
- -1로 변환된 숫자인지 확인후 변환되지 않은 숫자면 또 list에 담아주고 다시 비교
- list에 담은 값들 answer 배열로 변환하여 리턴
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] Level1. 두 정수 사이의 합 (Java) (0) | 2021.01.12 |
---|---|
[Programmers] Level1. 나누어 떨어지는 숫자 배열 (Java) (0) | 2021.01.11 |
[Programmers] Level1. 가운데 글자 가져오기 (Java) (0) | 2021.01.03 |
[Programmers] Level1. 2016년 (Java) (0) | 2021.01.02 |
[Programmers] Level1. K번째 수 (Java) (0) | 2021.01.01 |