반응형
사이트명 : 프로그래머스(Programmers)
문제명 : 폰켓몬
언어 : 자바(Java)
int nums 배열을 받는데
여기서 다른 값을 최대 몇 종류까지 가져올 수 있냐는 얘기다
종류의 한계는 nums.length / 2를 해주면 간단히 가져올 수 있다
내 풀이방법은 아래와 같은데
먼저 set에 nums 배열을 다 담아주는데
set은 중복을 허용하지 않기 때문에 동일한 값을 넣을 경우 하나만 들어간다
즉 최대 종류를 파악하는 문제기 때문에 중복 값은 필요가 없다는 얘기다
이후 set.size가 nums.length를 절반으로 나눈 값보다 크다면
절반만 반환할 수 있으므로 nums.length / 2를 반환하고
그렇지 않을 경우 모두 반환이 가능하므로 answer를 set.size로 한 뒤 반환하면 된다
마지막으로 프로그래머스에 바로 적용 가능한 코드는 아래와 같다
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
int answer = 0;
int catchVal = nums.length / 2;
HashSet<Integer> set = new HashSet<>();
for(int i = 0; i<nums.length; i++) {
set.add(nums[i]);
}
if(catchVal > set.size()) {
answer = set.size();
} else {
answer = catchVal;
}
return answer;
}
}
반응형
'Language > 알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 짝지어 제거하기(Java) (0) | 2019.10.16 |
---|---|
프로그래머스 N개의 최소공배수(Java) (0) | 2019.09.29 |
프로그래머스 예산(Java) (0) | 2019.09.24 |
프로그래머스 x만큼 간격이 있는 n개의 숫자(Java) (0) | 2019.09.24 |
프로그래머스 행렬의 덧셈(Java) (0) | 2019.09.24 |
댓글