일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 27866
- OAuth 인증
- github
- 노선별 평균 역 사이 거리 조회하기
- 자바
- 맥북
- 포맷 지정자
- 가격이 제일 비싼 식품의 정보 출력하기
- Java
- JDK
- 문자열 숫자 변환
- Android Studio
- 해시
- 프로그래머스
- M1
- Eclipse
- 핸드폰 가리기
- SQL코딩테스트
- 안드로이드 스튜디오
- homebrew
- 깃허브
- MAC OS
- 알고리즘
- 백준
- mysql
- 프로그램서
- HashMap
- sort정렬
- Iterator
- 코딩테스트
Archives
- Today
- Total
개발일지
[Java] 중복제거 (HashSet) / 폰켓몬 본문
728x90
🔗 링크
📌 문제 설명
- N마리의 폰켓몬의 종류 번호가 담긴 배열 nums
- N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아
- 그때의 폰켓몬 종류 번호의 개수를 리턴
👀 예제
- nums[3, 1, 2, 3]
- 4마리의 폰켓몬이 있으므로, 2마리의 폰켓몬을 골라야 함
- 가장 많은 폰켓몬을 고르기 위해서는 [3, 1] / [3, 2] / [1, 2] 이므로
- return값은 2
- numx[3, 3, 3, 2, 2, 4]
- 6마리의 폰켓몬이 있으므로, 3마리의 폰켓몬을 골라야 함
- [3, 2, 4]일 때 가장 많으므로
- return값은 3
✏️ 풀이 순서
- length / 2를 max값에 대입해 최대로 고를 수 있는 폰켓몬 수 구하기
- 중복 제거를 위해 Set에 nums를 담아주기
- 중복을 제거한 Set의 개수 구하기
- Set이 max보다 크면 max를 리턴, 아니면 set을 리턴
💻 코드
import java.util.*;
class Solution {
public int solution(int[] nums) {
// 최대 길이 구하기
int answer = nums.length/2;
// 중복 제거 위해 HashSet 사용
HashSet<Integer> set = new HashSet<>();
for (int num: nums) {
set.add(num);
}
// 중복을 제거한 set의 크기가 answer보다 크면 answer 리턴
if (set.size() > answer) {
return answer;
} else {
return set.size();
}
}
}
🌟 결과
728x90
'Algorithm' 카테고리의 다른 글
[JAVA] Iterator entrySet(), keySet(), values() (0) | 2024.04.25 |
---|---|
[JAVA] 전화번호 목록 (0) | 2024.04.25 |
[Java] sort정렬, HashMap / 완주하지 못한 선수 (0) | 2024.04.25 |
Set / HashSet (0) | 2024.04.24 |
시간 복잡도 (0) | 2023.11.17 |
Comments