ㅇ 폰켓몬 문제 :
n 마리의 폰켓몬 중에 n/2 마리를 가질 수 있음.
각 폰켓몬에는 종류에 따라 번호가 붙어있음 -> 같은 종류의 폰켓몬은 같은 번호를 가짐.
ex. 4마리의 폰켓몬 : [3 , 1 , 2 , 3] 이 될 수 있는 거임. 따라서 위 종류에서 1,4번 폰켓몬을 선택하는 것이 아닌 이상
최대 2 개 종류의 폰켓몬을 가질 수 있음.
- 원하는 결과
: n 마리 중 N/2 마리를 선택하는데 최대 종류를 가질 수 있는 수를 찾는 것
- 주어진 변수
1) nums : n 마리 폰켓몬의 종류 번호가 담긴 배열
- 제한사항
1) nums 는 1차원 배열
2) nums 의 길이는 1 ~ 10,000 중에서 짝수이다.
3) 폰켓몬의 종류 번호는 1 ~ 200,000
4) 가장 많은 종류의 폰켓몬을 선택하는 방법이 여러가지라도 그 최대값만 return 하면 됨
- ArrayList 를 사용
1) list.contains() : list에 인자로 전달받은 객체가 있는지 없는 확인
2) List<Integer> 을 통해 정수 리스트를 생성
3) nums[0] 의 시작 주소에 담긴 데이터를 리스트에 넣어줌
4) list.size() 와 nums.length 를 통해 크기 비교 후 결과값을 반환해줌
import java.util.*;
class Solution {
public int solution(int[] nums) {
int answer = 0;
List<Integer> list = new ArrayList<>();
list.add(nums[0]); // nums 배열의 주소를 list 연결리스트로 복사해줌
for(int i=1; i<nums.length; i++){
if(!list.contains(nums[i])){
list.add(nums[i]);
}
}
answer = list.size() > nums.length/2 ? nums.length/2 : list.size();
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
신규 아이디 추천 ( replaceAll, 정규표현식 ) (0) | 2022.08.18 |
---|---|
신고 결과 받기 (0) | 2022.08.11 |
숫자 문자열과 영단어 (0) | 2022.08.09 |
체육복 (0) | 2021.07.31 |
로또 최고 순위와 최저 순위 (0) | 2021.07.30 |