https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
1. 홍 박사는 N마리의 폰켓몬 중 N/2 마리를 가져가도 좋다고 함
2. 폰켓몬은 종류에 따라 고유 번호가 있어 같은 종류의 폰켓몬은 같은 번호를 가짐
3. 최대한 다양한 종류의 폰켓몬을 포함해 N/2마리 선택
4. N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어짐
5. 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아 폰켓몬 종류 번호의 개수를 return
풀이
1. HashSet 사용
*HashSet?
- set: 객체를 중복해 저장할 수 없음. 중복을 자동으로 제거해줌
- 비선형 구조이기 때문에 순서, 인덱스가 존재하지 않음
- List에 비해 처리 속도 느림
- HashSet: set 인터페이스에서 지원하는 구현 클래스
- 중복된 값 허용 x
- 저장한 순서가 보장되지 않음 (저장 순서를 유지해야 한다면 JDK 1.4 부터 지원되는 LinkedHashSet 이용)
- null 값 허용
- 아래와 같이 선언
HashSet<String> str = new HashSet<>();
2. set을 이용해 중복 제거
3. nums.length/n < set -> return set
4. nums.length/n > set -> return nums.length/n
import java.util.HashSet;
class Solution {
public int solution(int[] nums) {
int pick = nums.length/2;
int answer = 0;
HashSet <Integer> set = new HashSet<>();
for (int i: nums) {
set.add(i);
}
if (pick >= set.size()) {
answer = set.size();
}
else {
answer = pick;
}
return answer;
}
}
*Range-based for loop
//for (로컬변수:콜렉션시작주소)
//무조건 범위 전체를 탐색
'프로그래머스 (Java)' 카테고리의 다른 글
프로그래머스 0. 2차원으로 만들기 (자바) (0) | 2023.10.08 |
---|---|
프로그래머스 0. 외계행성의 나이 (자바) (0) | 2023.10.01 |
프로그래머스 0. 배열 원소의 길이 (자바) (0) | 2023.09.21 |
프로그래머스 0. 점의 위치 (자바) (0) | 2023.09.21 |
프로그래머스 0. 짝수 홀수 (자바) (0) | 2023.09.21 |