https://school.programmers.co.kr/learn/courses/30/lessons/12977

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


미리 구해 놓으면 편리하다.

기본적으로 에라토스테네스의 체를 구현했다고 생각하면 될듯

 

- Java

 

import java.util.*;
class Solution {
    static boolean[] aa = new boolean[3001];
    public int solution(int[] nums) {
        int answer = 0;
        Arrays.fill(aa,true);
        aaa();
        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++){
                    int a = nums[i]+nums[j]+nums[k];
                    if(aa[a]) answer++;
                }
                    
        return answer;
    }
    static void aaa(){
        aa[0]=false;aa[1]=false;
        for(int i=2;i<3001;i++)
            if(aa[i]==true)
                for(int j=i*2;j<3001;j+=i)
                    aa[j]=false;
    }
}

 

- Ruby

def solution(n)
    answer = 0

    a=Array.new(3001,true)
    a[0]=false;a[1]=false
    for i in 2..3000
        if a[i]==true
            k=i*2
            while k<3001
                a[k]=false
                k=k+i
            end
        end
    end

    for i in 0..(n.length-1)
        for j in i+1..(n.length-1)
            for k in j+1..(n.length-1)
                b=n[i]+n[j]+n[k]
                if a[b]==true
                    answer=answer+1
                end
            end
        end
    end
    
    return answer
end

+ Recent posts