https://school.programmers.co.kr/learn/courses/30/lessons/1845
처음 풀이
import java.util.ArrayList;
class Solution {
public int solution(int[] nums) {
int answer = 0;
ArrayList<Integer> ponum = new ArrayList<>();
for(int i: nums) {
if(!ponum.contains(i)) ponum.add(i);
}
if(ponum.size() > (nums.length / 2)) answer = nums.length / 2;
else answer = ponum.size();
return answer;
}
}
나중 풀이 (다른사람의 풀이 참고)
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
int answer = 0;
HashSet<Integer> ponum = new HashSet<>();
for(int i: nums) {
ponum.add(i);
}
if(ponum.size() > (nums.length / 2)) answer = nums.length / 2;
else answer = ponum.size();
return answer;
}
}
HashSet을 사용하면 중복된 요소를 허용하지 않고, 값을 넣을 수 있다
- 내부의 값을 검색하는 경우 contains(value) 메소드 사용
- null 요소 또한 허용
따라서 해당 문제는 첫번째 풀이(ArrayList 사용)면 중복된 값을 다시 걸러내야 하는 필요성이 존재하지만
HashSet을 사용하면 자동으로 이를 걸러주어 add 하기 때문에 수고로움을 덜 수 있음
댓글