728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12977
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
주어진 정수 중 3개를 더했을 때 소수가 되는 경우의 수를 구하는 문제이다.
3중 for문으로 간단하게 구현할 수 있다.
주어진 구간 내(배열의 크기)에서 각각 3개의 수를 선택하여 더하는 간단한 구조이다.
public int solution(int[] nums) {
int answer = 0;
boolean[] isPrime = eratos(2999);
for(int i = 0 ; i < nums.length-2; i++){
for(int j = i+1 ; j < nums.length-1; j++){
for(int k = j+1 ; k < nums.length; k++){
int sum = nums[i] + nums[j] + nums[k];
if(isPrime[sum]){
answer++;
}
}
}
}
return answer;
}
소수 판별은 에라토스테네스의 체를 이용하여 구하였다.
❗에라토스테네스의 체란?
구간 내의 모든 소수를 미리 구하는 방식으로, 소수의 배수는 소수가 될 수 없음을 이용하여 소수를 찾았다면 구간 내의 모든 소수의 배수를 미리 지워 구간 내에 소수만 남기는 방식을 말한다.
https://i-am-strong-man.tistory.com/120
[소수] 백준 4134번: 다음 소수 Java
테스트 케이스로 주어진 각 정수와 같거나 더 큰 소수 중 가장 작은 소수 하나를 구하는 문제이다. 10의 9승 * 4의 제법 큰 수를 대상으로 해야하기 때문에 처음에는 에라토스테네스의 체를 사용
i-am-strong-man.tistory.com
https://i-am-strong-man.tistory.com/69
[정수론] 백준 2581번 - 소수 Java
주어진 입력 M, N에 대하여 M부터 N까지의 자연수 중 소수인 것을 모두 골라 이들의 합과 최솟값을 찾는 문제이다. 간단하게 생각했을 때 소수를 찾는 법은 어떠한 자연수 K에 대하여 나누는 제수
i-am-strong-man.tistory.com
boolean[] eratos(int max){
boolean[] isPrime = new boolean[max];
Arrays.fill(isPrime, true);
isPrime[0] = isPrime[1] = false;
for(int i = 2 ; i*i<=max ; i++){
if(isPrime[i]){
for(int j = i*i; j <=max ; j+=i){
isPrime[j] = false;
}
}
}
return isPrime;
}
전체코드
import java.io.IOException;
import java.util.Arrays;
class Solution {
boolean[] eratos(int max){
boolean[] isPrime = new boolean[max];
Arrays.fill(isPrime, true);
isPrime[0] = isPrime[1] = false;
for(int i = 2 ; i*i<=max ; i++){
if(isPrime[i]){
for(int j = i*i; j <=max ; j+=i){
isPrime[j] = false;
}
}
}
return isPrime;
}
public int solution(int[] nums) {
int answer = 0;
boolean[] isPrime = eratos(2999);
for(int i = 0 ; i < nums.length-2; i++){
for(int j = i+1 ; j < nums.length-1; j++){
for(int k = j+1 ; k < nums.length; k++){
int sum = nums[i] + nums[j] + nums[k];
if(isPrime[sum]){
answer++;
}
}
}
}
return answer;
}
}
728x90
'Algorithm > 프로그래머스' 카테고리의 다른 글
[투포인터] 프로그래머스 | 연속된 부분 수열의 합 Java (0) | 2024.07.01 |
---|---|
[문자열] 프로그래머스 | 전화번호 목록 Java (0) | 2024.07.01 |
[그리디] 프로그래머스 | 예산 Java (0) | 2024.07.01 |
[문자열] 프로그래머스 | 완주하지 못한 선수 C++ Java (0) | 2024.07.01 |
[DP] 프로그래머스_2024 KAKAO WINTER INTERNSHIP - 산 모양 타일링 (0) | 2024.03.24 |