문제
https://school.programmers.co.kr/learn/courses/30/lessons/1845
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
설명
입출력
나의 풀이
풀이 과정
구현한 코드는 아래와 같다.
import java.util.*;
class Solution {
public int solution(int[] nums) {
int num = nums.length / 2;
Set<Integer> hs = new HashSet<Integer>();
// hs에 nums 넣어서 중복 제거하기
for (int i=0; i < nums.length; i++) {
hs.add(nums[i]);
}
int pokemon_nums = hs.size();
if (pokemon_nums <= num) {
return pokemon_nums;
} else {
return num;
}
}
}
제일 중요한 것은 nums에 들어있는 포켓몬의 종류의 수를 구하는 것이다.
포켓몬의 종류의 수를 구하기 위해서는 nums의 원소들을 모든 HashSet에 넣어서 중복된 종류를 없애줘야한다.
num은 최대로 가져갈 수 있는 폰켓몬의 수이다.
pokemon_nums는 HashSet의 크기이고 즉, 중복을 없애고 구한 폰켓몬 종류의 수 이다.
pokemon_nums <= num : 최대로 가져갈 수 있는 폰켓몬의 수보다 폰켓몬 종류의 수가 작거나 같으므로
최대로 가져갈 수 있는 폰켓폰의 종류의 수는 폰켓몬 종류의 수 그대로이다.
pokemon_nums > num : 최대로 가져갈 수 있는 폰켓몬의 수보다 폰켓몬 종류의 수가 크므로
최대로 가져갈 수 있는 폰켓폰의 종류의 수는 최대로 가져갈 수 있는 폰켓몬의 수인 num이다.
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (JAVA) Lv2 올바른 괄호 (0) | 2023.07.02 |
---|---|
[프로그래머스] (JAVA) Lv1 같은 숫자는 싫어 (0) | 2023.07.02 |
[프로그래머스] (JAVA) Lv2 더 맵게 (0) | 2023.07.02 |
[프로그래머스] (JAVA) Lv2 카펫 (0) | 2023.07.02 |
[프로그래머스] (JAVA) Lv1 최소직사각형 (0) | 2023.07.01 |