✔ 다음과 같이 int n, 과 int[] arr이 주어졌을 때 중복 되는 숫자가 있으면 D를 없으면 U를 출력해라.
8
20 25 52 30 39 33 43 33
중복을 확인하는 문제는 다음과 같은 방법을 사용하여 해결할 수 있다.
1. HashMap
- HashMap에 배열을 key와 value로 담고, value 값이 1 이상인 것이 있으면 중복되는 숫자가 있다고 볼 수 있다.
즉 'D'를 return 한다.
public char solution(int n, int[] arr){
char answer = 'U';
HashMap<Integer, Integer> map = new HashMap<>();
for(int x : arr){
map.put(x, map.getOrDefault(x, 0)+1);
if(map.get(x) > 1) answer = 'D';
}
return answer;
}
2. 정렬
- 주어진 배열을 정렬한 뒤, 이웃하는 숫자들을 확인하여 중복여부를 체크한다.
public char solution(int n, int[] arr){
char answer = 'U';
// 정렬 사용 방법
Arrays.sort(arr);
for(int i=0; i<n-1; i++){
if(arr[i] == arr[i+1]) return 'D';
}
return answer;
}
'Algorithm' 카테고리의 다른 글
[Algorithm] 좌표 정렬 - compareTo (0) | 2023.01.18 |
---|---|
[Algorithm] 자바/ 최대공약수, 최소공배수 - 유클리드 호제법 (0) | 2023.01.18 |
[프로그래머스] k번째 수 - JAVA (0) | 2023.01.13 |
[프로그래머스] 올바른 괄호 - JAVA (0) | 2022.11.29 |
[프로그래머스] 배열의 평균 - JAVA (0) | 2022.11.22 |