코딩테스트(Level 0~1)

[JAVA, Programmers] 소수 만들기(자바)

justdoIT0730 2022. 12. 8. 19:49
728x90
728x90

1. 문제 설명

 주어진 숫자 3개의 수를 더했을 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums 매개변수로 주어질 , nums 있는 숫자들 서로 다른 3개를 골라 더했을 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.

 

2. 제한사항

nums 들어있는 숫자의 개수는 3 이상 50 이하입니다.

nums 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

 

3. 입출력

nums result
[1,2,3,4] 1
[1,2,7,6,4] 4

 

4. 입출력 설명

- 입출력 #1
[1,2,4] 이용해서 7 만들 있습니다.

 

- 입출력 #2
[1,2,4] 이용해서 7 만들 있습니다.
[1,4,6] 이용해서 11 만들 있습니다.
[2,4,7] 이용해서 13 만들 있습니다.
[4,6,7] 이용해서 17 만들 있습니다.

 

5. 풀이

import java.util.*;
class Solution {
	public int solution(int[] nums) {
		int answer = 0;
		ArrayList<Integer> list = new ArrayList<Integer>();

		for (int i = 0; i < nums.length; i++) {
			for (int y = i + 1; y < nums.length; y++) {
				for (int z = y + 1; z < nums.length; z++) {
					list.add(nums[i] + nums[y] + nums[z]);
				}				
			}
		}

		for (int i = 0; i < list.size(); i++) {
			int cnt = 0;
			for (int y = 2; y < list.get(i) - 1; y++) {
				if (list.get(i) % y == 0) {cnt++; break;}
			}
			if (cnt == 0) {answer++;}
		}
		return answer;
	}
}

1. nums 내 숫자들을 3개를 뽑아 더한다.

2. 더한 수들 중 소수만 뽑아서 answer를 센다.

728x90
728x90