Notice
Recent Posts
Recent Comments
Link
투케이2K
219. (java/자바) 알고리즘 : 포켓몬 - 경우의 수, HashSet 중복 제거 배열 본문
[개발 환경 설정]
개발 툴 : Eclipse
개발 언어 : Java
[소스 코드]
package ex5;
import java.util.Arrays;
import java.util.HashSet;
public class MainActivity26 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[Program Start]");
System.out.println("");
/**
* [포켓몬]
* 1. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다
* 2. 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다
* 3. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다
* - 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택
* - 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택
* - 첫 번째(3번), 네 번째(3번) 폰켓몬을 선택
* - 두 번째(1번), 세 번째(2번) 폰켓몬을 선택
* - 두 번째(1번), 네 번째(3번) 폰켓몬을 선택
* - 세 번째(2번), 네 번째(3번) 폰켓몬을 선택
* 4. N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하세요
* 5. 입출력 예시 :
* - nums = [3,1,2,3] / result = 2
* - nums = [3,3,3,2,2,4] / result = 3
* - nums = [3,3,3,2,2,2] / result = 2
* 6. 프로그래머스 사이트 : https://programmers.co.kr/learn/courses/30/lessons/1845
* */
// [초기 변수 선언 실시]
int arr[] = {3,1,2,3};
//int arr[] = {3,3,3,2,2,4};
//int arr[] = {3,3,3,2,2,2};
// [메소드 호출 수행 실시]
System.out.println("결과 : " + solution(arr));
System.out.println("");
}// 메인 종료
public static int solution(int[] nums) {
// [리턴 결과를 반환 할 변수 선언 실시]
int result = 0;
// [인풋으로 들어온 전체 배열 n/2 길이 저장]
int checkSize = nums.length/2;
// [인풋으로 들어온 데이터 확인 실시]
System.out.println("[arr] : " + Arrays.toString(nums));
System.out.println("[length / 2] : " + checkSize);
System.out.println("");
// [반복문을 수행하면서 중복 데이터 데이터 삽입 실시 실시]
/**
* 1. 겹치지 않는 경우의 수를 출력하기 위해 HashSet 을 사용해 중복 제거 데이터를 삽입합니다
* 2. hashSet 사이즈가 가질 수 있는 폰켓몬의 수 개수입니다
* 3. 질문에서 n/2 마리를 가져도 좋다고 제시했기 때문에
* >> hashSet 중복 제거 사이즈가 >> n/2 크기보다 큰경우 >> n/2 개수 제한을 겁니다
* */
HashSet hashSet = new HashSet();
for(int i=0; i<nums.length; i++) {
hashSet.add(nums[i]);
}
System.out.println("[hashSet] : " + hashSet.toString());
System.out.println("");
// [checkSize 와 hashSet 사이즈 크기를 비교해 리턴 결과 삽입]
if(checkSize > hashSet.size()) {
result = hashSet.size();
}
else {
result = checkSize;
}
// [리턴 결과 반환 실시]
return result;
}
}// 클래스 종료
[결과 출력]
[요약 설명]
/**
* 1. 겹치지 않는 경우의 수를 출력하기 위해 HashSet 을 사용해 중복 제거 데이터를 삽입합니다
* 2. hashSet 사이즈가 가질 수 있는 폰켓몬의 수 개수입니다
* 3. 질문에서 n/2 마리를 가져도 좋다고 제시했기 때문에
* >> hashSet 중복 제거 사이즈가 >> n/2 크기보다 큰경우 >> n/2 개수 제한을 겁니다
* */
반응형
'Java' 카테고리의 다른 글
Comments