[programmers] 소수 만들기 (java) -1level
2022. 2. 28. 11:08ㆍAlgorithm/Programmers
문제 설명
문제 해결
다른 방법이 없을까 하다가 결국 3중 for문을 이용해 인덱스의 값들로만 합을 구했다.
구한 값을 list.add를 통해 넣고 배열로 옮겨준다음 그 배열의 값들이 소수인지 판단하여 문제를 풀어주었다.
import java.util.ArrayList;
class Solution {
public int solution(int[] nums) {
int answer = 0;
int cnt = 0, sum = 0;
ArrayList<Integer> list = new ArrayList<>(); // 세개 수의 합을 담을 리스트
for (int a = 0; a < nums.length; a++) {
for (int b = a + 1; b < nums.length; b++) {
for (int c = b + 1; c < nums.length; c++) {
sum = nums[a] + nums[b] + nums[c];
list.add(sum);
}
}
}
int[] arr = new int[list.size()];
for (int i = 0; i < arr.length; i++) {
arr[i] = list.get(i);
}
// 소수를 구하기
for (int i = 0; i < arr.length; i++) {
cnt = 0;
for (int j = 1; j <= arr[i]; j++) {
if (arr[i] % j == 0) cnt++;
}
if (cnt == 2) answer++;
}
return answer;
}
}
+ ) 메서드를 이용해 깔끔하게 다시 정리
import java.util.ArrayList;
public class 소수만들기 {
public int solution(int[] nums) {
int answer = 0;
int sum = 0;
ArrayList<Integer> list = new ArrayList<>(); // 세개 수의 합을 담을 리스트
for (int a = 0; a < nums.length; a++) {
for (int b = a + 1; b < nums.length; b++) {
for (int c = b + 1; c < nums.length; c++) {
sum = nums[a] + nums[b] + nums[c];
if (isPrime(sum)) answer++;
}
}
}
return answer;
}
public static boolean isPrime(int n) {
boolean istrue = true;
for (int i = 2; i < n; i++) {
if (n % i == 0) { // 소수가 아닐 때
istrue = false;
break;
}
}
return istrue;
}
}
728x90
'Algorithm > Programmers' 카테고리의 다른 글
[programmers] 3진법 뒤집기 (java) -1level (0) | 2022.03.02 |
---|---|
[programmers] 두 개 뽑아서 더하기 (java) -1level (0) | 2022.03.01 |
[programmers] 모의고사 (java) -1level (0) | 2022.02.27 |
[programmers] 2016년 (java) -1level (0) | 2022.02.26 |
[programmers] 최소직사각형 (java) -1level (0) | 2022.02.26 |