728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
알고리즘 스터디를 진행하고 있습니다.
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/1845
문제 설명
N마리의 폰켓몬 중 N/2마리를 가져갈 수 있다.
각 배열의 값은 폰켓몬의 종류를 의미하는데, 가져갈 수 있는 폰켓몬의 종류 수의 최댓값을 구하세요.
풀이 방법
1. 최대 가져갈 수 있는 폰켓몬은 N/2
2. 연구실에 존재하는 폰켓몬의 종류의 수 구하기
고려해야 할 케이스
- 종류가 많아도 다 못 데려가는 케이스
- 많이 데려갈 수 있어도 종류가 다양하지 않는 케이스
내 코드(JAVA)
public int solution(int[] nums) {
HashSet<Integer> set = new HashSet<>(); // set.size() : 폰켓몬 종류의 수
int maxCount = nums.length/2;
for(int num : nums) {
set.add(num);
}
// set.size()가 maxCount 보다 크거나 같다면 maxCount -> 종류가 많아도 다 못데려감
// set.size()가 maxCount 보다 작다면 set.size() -> 많이 데려갈 수 있어도 종류가 없음
return maxCount <= set.size() ? maxCount : set.size();
}
스터디 공유 내용
폰켓몬의 종류의 수(Set의 길이)와 데려갈 수 있는 수(maxCount) 중 최소값이 구하려는 값임을 확인하였습니다.
예를 들어 5마리를 데려갈 수 있어도 종류가 1가지라면 > 1
2마리를 데려갈 수 있어도 종류가 4가지라면 > 2
return Math.min(maxCount, set.size());
위 코드처럼 사용이 가능하다.
좋은 발상인 것 같다~!
728x90
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/JAVA] 신규 아이디 추천 (0) | 2021.07.29 |
---|---|
[LeetCode/JAVA] 1877. Minimize Maximum Pair Sum in Array (0) | 2021.07.28 |
[LeetCode/JAVA] 88. Merge Sorted Array (0) | 2021.07.26 |
[LeetCode/JAVA] 561. Array Partition I (0) | 2021.07.25 |
[LeetCode/JAVA] 21. Merge Two Sorted Lists (0) | 2021.07.24 |
댓글