https://school.programmers.co.kr/learn/courses/30/lessons/12977
- 소수 판별 메소드
- 소수 추출 메소드
배열 합 범위 내에서 소수들 list 만들었는데 그래서 코드가 길어진듯..?
package Programmers;
import java.util.ArrayList;
import java.util.List;
public class PrimeNum2 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
int[] nums = {1, 2, 3, 4, 5, 6};
int sum = 0;
int result = 0;
// 소수추출범위지정 (3개합의 최대값)
int sumOfNums = 0;
for (int i = 0; i < 3; i++) {
sumOfNums += nums[(nums.length-1)-i];
}
list = primeNums(sumOfNums); // 소수들
// 배열에서 3개의 합 추출 + 소수판별
for (int i = 0; i < nums.length; i++) {
for (int j = i+1; j < nums.length; j++) {
for (int k = j+1; k < nums.length; k++) {
sum = nums[i] + nums[j] + nums[k];
if(list.contains(sum)) {
System.out.printf("%d, %d, %d 의 합은 %d\n", nums[i], nums[j], nums[k], sum);
result++;
}
}
}
}
System.out.println("경우의 수 : " + result);
}
// 소수추출
public static List<Integer> primeNums(int sumOfNums) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i <= sumOfNums; i++) {
if(prime(i) != 0 ) {
list.add(i);
}
}
return list;
}
// 소수판별
public static int prime(int sum) {
int result = 0;
int prime = 0;
for (int i = 1; i <= sum; i++) {
if(sum % i == 0) {
result++;
}
}
if(result == 2) {
prime = sum;
} else {
prime = 0;
}
return prime;
}
}
1, 2, 4 의 합은 7
1, 4, 6 의 합은 11
2, 3, 6 의 합은 11
2, 4, 5 의 합은 11
2, 5, 6 의 합은 13
3, 4, 6 의 합은 13
경우의 수 : 6
쓸떼없는 코드 빼고 (List) 다시 정리해봤다. 정답인정!
- 소수 판별 메소드 : 나머지가 0인 약수가 하나일 때 (1 하나일 때) true 반환
class Solution {
public static int solution(int[] nums) {
int answer = 0;
int sum = 0;
for (int i = 0; i < nums.length; i++) {
for (int j = i+1; j < nums.length; j++) {
for (int k = j+1; k < nums.length; k++) {
sum = nums[i] + nums[j] + nums[k];
if(prime(sum)) {
answer++;
}
}
}
}
return answer;
}
public static boolean prime(int num) {
int count = 0;
boolean result = false;
for (int i = 1; i < num; i++) {
if(num % i == 0) {
count++;
}
}
if (count == 1) {
result = true;
}
return result;
}
}
'Java > 문제풀이연습' 카테고리의 다른 글
[프로그래머스] 점 찍기 (Lv. 2) (0) | 2024.02.05 |
---|---|
[코딩도장] Multiples of 3 and 5 / Paging (Lv. 1) (0) | 2024.01.21 |
[코딩도장] 피보나치 수열 구하기 (Lv. 1) (0) | 2024.01.19 |