Notice
Recent Posts
Recent Comments
Link
투케이2K
26. (TWOK/ALGORITHM) [Java] 소수 만들기 - 다중 for 문 , 경우의 수 , HashSet 중복 제거 본문
투케이2K 알고리즘
26. (TWOK/ALGORITHM) [Java] 소수 만들기 - 다중 for 문 , 경우의 수 , HashSet 중복 제거
투케이2K 2022. 7. 14. 08:14[환경 설정 및 설명]
언 어 : Java
설 명 : 소수 만들기 - 다중 for 문 , 경우의 수 , HashSet 중복 제거
[소스 코드]
package ex6;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
public class MainActivity6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[Program Start]");
System.out.println("");
/**
* [소수 만들기]
* 1. 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다
* 2. 입출력 예시 :
* - nums = [1,2,3,4] / result = 1
* - nums = [1,2,7,6,4] / result = 4
* 3. 프로그래머스 사이트 : https://programmers.co.kr/learn/courses/30/lessons/12977
* 4. 참고 : 소수란 1과 자기 자신만 나누어떨어지는 수 입니다
* */
// 초기 변수 선언 실시
int arr[] = {1, 2, 3, 4}; // [1 번]
//int arr[] = {1, 2, 7, 6, 4}; // [2 번]
// 메소드 호출 및 결과 확인
System.out.println("결과 : " + solution(arr));
}// 메인 종료
public static int solution (int nums[]) {
// 결과를 담을 변수 선언 실시
int result = 0;
// 인풋으로 들어온 데이터 확인
System.out.println("nums : " + Arrays.toString(nums));
System.out.println("");
// 로직 처리 실시
/**
* [세부 설명]
* 1. for 문을 사용해서 각각 매핑되는 경우의 수를 구합니다
* 2. for 문을 0, 1, 2 각 초기 값을 선언해서 반복문을 수행합니다
* 3. hashset 을 사용해서 데이터 중복을 제거하면서 저장 실시
* */
HashSet hashSet = new HashSet(); // 데이터 중복 제거 배열
for (int i=0; i<nums.length; i++) { // for 반복문 수행
for(int j=1; j<nums.length; j++) {
for(int k=2; k<nums.length; k++) {
if(nums[i] !=nums[j] && nums[i]!=nums[k] && nums[j] != nums[k]) { // 같은 수를 포함 하지 않는 경우 저장
hashSet.add(nums[i]+nums[j]+nums[k]); // hashSet 에 데이터 삽입
System.out.println("경우의 수 : " + nums[i]+":"+nums[j]+":"+nums[k]);
}
}
}
}
System.out.println("");
// Iterator 사용해서 hashSet에 저장된 데이터 확인 실시
int cnt = 0;
Iterator iterator = hashSet.iterator();
while(iterator.hasNext()){
int data = (int) iterator.next();
for(int n=2; n<=data; n++) {
if(data%n == 0) { //나누기 수행 >> 몫이 0인경우 (즉, 나누어떨어진경우)
cnt ++;
}
}
if(cnt == 1) result ++; //소수는 1과 자기자신뿐인 수로 for 반복문을 2부터 수행했으므로 1값으로 나온 수가 소수다
System.out.println("HashSet Data : " + data);
System.out.println("cnt : " + cnt);
System.out.println("");
cnt = 0; // 카운트 초기화
}
System.out.println("");
// 결과 반환 실시
return result;
}
}// 클래스 종료
[참고 사이트]
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
Comments