반응형
1. 문제 정의
2. 문제 접근
dfs를 통해 만들어질 수 있는 숫자를 모두 구해 소수인지 판별해주면 될 것 같다.
3. 문제 풀이
- dfs를 통해 만들어질 수 있는 경우의 수를 모두 구한다.
- isPrim 함수를 통해 소수인지 판별한다.
4. 코드
import java.util.*;
class Solution {
static List<Integer> list = new ArrayList<>();
static boolean[] check = new boolean[7];
public int solution(String numbers) {
int answer = 0;
for (int i = 0; i < numbers.length(); i++) {
dfs(numbers, "", i + 1);
}
for (int i = 0; i < list.size(); i++) {
if (isPrime(list.get(i))) answer++;
}
return answer;
}
static void dfs(String str, String temp, int l) {
if (temp.length() == l) {
int num = Integer.parseInt(temp);
if (!list.contains(num)) list.add(num);
} else {
for (int i = 0; i < str.length(); i++) {
if (!check[i]) {
check[i] = true;
temp += str.charAt(i);
dfs(str, temp, l);
check[i] = false;
temp = temp.substring(0, temp.length() - 1);
}
}
}
}
static boolean isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i*i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
}
5. 회고
처음에 dfs로 어떻게 모든 경우의 수를 구하는지가 어려웠다. 소수를 판별하는 알고리즘은 정형화 되있어 편했다. 완전탐색을 많이 연습해야겠다.
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
99클럽 코테 스터디 10일차 TIL, DFS,BFS(게임 맵 최단 거리) (0) | 2024.05.31 |
---|---|
99클럽 코테 스터디 9일차 TIL, DFS,BFS(타겟 넘버) (0) | 2024.05.30 |
99클럽 코테 스터디 7일차 TIL, 완전탐색(카펫) (0) | 2024.05.28 |
99클럽 코테 스터디 5일차 TIL, 정렬(가장 큰 수) (0) | 2024.05.26 |
17144번 - 미세먼지 안녕! (0) | 2023.04.30 |