https://school.programmers.co.kr/learn/courses/30/lessons/42839
ArrayList<Integer> al = new ArrayList<>();
generate(al, numbers.toCharArray(), new boolean[numbers.length()], "");
for (int i = 0; i < al.size(); i++) {
if (toPrimeNumber(al.get(i))) {
answer++;
}
}
소수 여부를 확인하여 소수인 경우 정답을 증가
public boolean toPrimeNumber(int number) {
if (number <= 1) return false;
for (int i = 2; i < number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
소수 여부를 체크
public void generate(ArrayList<Integer> al, char[] numbers, boolean[] booleans, String s) {
for (int i = 0; i < numbers.length; i++) {
if (!booleans[i]) {
s += String.valueOf(numbers[i]);
booleans[i] = true;
generate(al, numbers, booleans, s);
s = s.substring(0, s.length() - 1);
booleans[i] = false;
} else {
if (!al.contains(Integer.parseInt(s))) {
al.add(Integer.parseInt(s));
}
}
}
}
숫자 생성
import java.util.ArrayList;
class Solution {
public int solution(String numbers) {
int answer = 0;
ArrayList<Integer> al = new ArrayList<>();
generate(al, numbers.toCharArray(), new boolean[numbers.length()], "");
for (int i = 0; i < al.size(); i++) {
if (toPrimeNumber(al.get(i))) {
answer++;
}
}
return answer;
}
public boolean toPrimeNumber(int number) {
if (number <= 1) return false;
for (int i = 2; i < number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
public void generate(ArrayList<Integer> al, char[] numbers, boolean[] booleans, String s) {
for (int i = 0; i < numbers.length; i++) {
if (!booleans[i]) {
s += String.valueOf(numbers[i]);
booleans[i] = true;
generate(al, numbers, booleans, s);
s = s.substring(0, s.length() - 1);
booleans[i] = false;
} else {
if (!al.contains(Integer.parseInt(s))) {
al.add(Integer.parseInt(s));
}
}
}
}
}
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 조이스틱 (0) | 2023.06.18 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 카펫 (0) | 2023.06.12 |
[프로그래머스][JAVA]Lv. 2 - H-Index (0) | 2023.05.18 |
[프로그래머스][JAVA]Lv. 2 - 더 맵게 (0) | 2023.05.18 |
[프로그래머스][JAVA]Lv. 2 - 프로세스 (0) | 2023.05.17 |