백_곰 2022. 2. 9. 21:11

1. 문제 설명

 

 

 

 

2. 입출력 조건 및 예제

입력 조건

문제 설명 참고

 

출력 조건

문제 설명 참고

 

 

입력 예제

2

1 2 3 4

1 2 7 6 4

 

출력 예제

1

4

 

 

 

 

3. 제약 조건

문제 설명 참고

 

 

 

 

4. 가정법

X

 

 

 

 

5. 기저 사례

X

 

 

 

 

6. 코드

public class Main {
	private static BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
	private static StringTokenizer st;
	private static StringBuilder sb = new StringBuilder();
	
	public static void main(String[] args) throws Exception {
		int c = Integer.parseInt(sc.readLine());
		
		for(int i=0; i<c; i++){
			st = new StringTokenizer(sc.readLine());
			int N = st.countTokens();
			int[] A = new int[N];
			
			for(int j=0; j<N; j++) {
				A[j] = Integer.parseInt(st.nextToken());
			}
			sb.append(findPrime(A)+"\n");
		}
		System.out.println(sb);
	}
	
	private static int findPrime(int[] A) {
		ArrayList<Integer> arr = new ArrayList<>();
		int ret=0;
		
		for(int i=0; i<A.length-2; i++) {
			for(int j=i+1; j<A.length-1; j++) {
				for(int k=j+1; k<A.length; k++) {
					arr.add(A[i]+A[j]+A[k]);
				}
			}
		}
		
		for(int i=0; i<arr.size(); i++) {
			int tmp = arr.get(i);
			boolean isTrue=true;
			
			for(int j=2; j<tmp; j++) {
				if(tmp%j==0) {
					isTrue=false;
					break;
				}
			}
			if(isTrue) {
				ret++;
			}
		}
		return ret;
	}
}

 

( 말 그대로 중복없이 모든 경우의 수를 구하고 소수를 구해주면 된다. )