☕Language: Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import java.util.Set;
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
int answer = 0;
Set<Integer> set = new HashSet<>();
for(int i : nums){
set.add(i);
}
answer = set.size() <= nums.length/2 ? set.size() : nums.length/2;
return answer;
}
}
|
🤔 해설
1. Set<Integer> set = new HashSet<>();
- set에 입력하여, 중복값 제거
2. answer = set.size() <= nums.length/2 ? set.size() : nums.length/2;
- set 크기와 nums의 크기의 1/2을 비교하여 작은 값 return
😮 이 외의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
|
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] nums) {
return Arrays.stream(nums)
.boxed()
.collect(Collectors.collectingAndThen(Collectors.toSet(),
phonekemons -> Integer.min(phonekemons.size(), nums.length / 2)));
}
}
|
1. Arrays.stream(nums)
- nums 배열을 stream으로 변환
2. boxed()
- 스트림의 요소를 박싱(boxing)하여 Integer 객체로 변환
3. collect()
- 스트림의 요소를 수집하고 다양한 중간 및 종료 연산을 수행
- Collectors.toSet()
- 스트림의 요소를 중복 없이 유일한 값만 포함하는 Set 컬렉션으로 수집
- phonekemons -> Integer.min(phonekemons.size(), nums.length / 2)
- phonekemons: 중복을 제거한 Set 컬렉션 이름(Collectors.toSet()에서 생성된 Set 컬렉션에 대한 임시 변수의 이름)
⭐ 스트림: '데이터의 흐름’
- 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있음
- 람다를 이용해서 코드의 양을 줄이고 간결하게 표현할 수 있음
- 배열과 컬렉션을 함수형으로 처리할 수 있음
간단하게 병렬처리(multi-threading)가 가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import java.util.*;
class Solution {
public int solution(int[] nums) {
//1. 기존 length를 구한다.
//2. 중복값을 제거한 length를 구한다.
//3. 두 값중 최소값이 정답.
List<Integer> list = new ArrayList<Integer>();
for(int i = 0 ; i < nums.length; i++){
if(!list.contains(nums[i])){
list.add(nums[i]);
}
}
return nums.length/2 > list.size()?list.size():nums.length/2;
}
}
|
⭐ 풀 때, 로직 적어두고 풀기
🔗 소스 코드
GitHub
📚 참고 자료
'Computer > Algorithm_Java' 카테고리의 다른 글
[Programmers] 같은 숫자는 싫어 (Success) (0) | 2023.09.16 |
---|---|
[Programmers] 가운데 글자 가져오기 (Success) (0) | 2023.09.15 |
[BaekJoon] 1620번 나는야 포켓몬 마스터 이다솜 문제 풀이 (Success) (0) | 2023.09.12 |
[BaekJoon] 10870번 피보나치 수 5 문제 풀이 (Success) (0) | 2023.09.11 |
[BaekJoon] 11659번 구간 합 구하기4 문제 풀이 (Success) (0) | 2023.09.10 |