-
프로그래머스 (Level 1) - 소수 만들기Coding Test/Coding Test 문제 풀이 2021. 12. 26. 16:16
문제 설명
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
풀이
주어진 정수형 배열 nums에서 임의의 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하는 문제이다.
우선, 정수형 배열 nums에서 완전 탐색 기법을 사용해서 3개의 숫자로 구성할 수 있는 모든 조합을 탐색하였다. 3개의 숫자 조합을 탐색할 때마다 3개 숫자의 합을 구하고, 구한 숫자가 소수인지 아닌지 판별 함으로써 문제를 해결하였다.
전체 소스코드
import java.io.*; import java.util.*; public class Solution05 { static int[] numbers; static boolean[] visited; static int[] arr = new int[3]; static int answer = 0; public int solution(int[] nums) { numbers = nums; visited = new boolean[nums.length]; dfs(0, 0); return answer; } /** 3개의 숫자로 구성할 수 있는 모든 조합을 탐색 */ static void dfs(int start, int depth) { if (depth == 3) { int target = 0; for (int number : arr) target += number; if (isTrue(target)) answer++; return; } for (int i = start; i < numbers.length; i++) { if (visited[i] == false) { visited[i] = true; arr[depth] = numbers[i]; dfs(i, depth + 1); visited[i] = false; } } } /** 소수를 판별하는 메서드 */ static boolean isTrue(int target) { for (int i = 2; i <= target / 2; i++) { if (target % i == 0) return false; } return true; } }
728x90'Coding Test > Coding Test 문제 풀이' 카테고리의 다른 글
프로그래머스 (Level 1) - K번째수 (0) 2021.12.27 프로그래머스 (Level 1) - 완주하지 못한 선수 (0) 2021.12.26 프로그래머스 (Leve 1) - 내적 (0) 2021.12.26 프로그래머스 (Level 1) - 없는 숫자 더하기 (0) 2021.12.26 프로그래머스 (Level 1) - 음양 더하기 (0) 2021.12.26