해당 문제는 입력 받은 문자열을 각 하나의 문자 조각으로 나누고 각 문자 조합을 전부 만들어 해당 문자조합이 숫자로 파싱했을때 소수인 경우에만 set에 넣어주도록 했습니다. set은 중복이 없으므로 이후 set의 사이즈를 구함으로서 소수의 갯수를 구할 수 있었습니다.
public int solution(String numbers) {
Set<Integer> primeNumberSet = new HashSet<>();
List<String> splitNumberStrings = new ArrayList<>();
for(int i = 0; i < numbers.length(); i++) {
splitNumberStrings.add(numbers.substring(i, i + 1));
}
makeOtherNumber(primeNumberSet, "", splitNumberStrings);
return primeNumberSet.size();
}
public void makeOtherNumber(Set<Integer> primeNumberSet, String preString, List<String> splitNumbers) {
for (int i = 0; i< splitNumbers.size(); i++) {
List<String> copiedList = new ArrayList<>(splitNumbers);
String combineString = preString + copiedList.get(i);
int parseNumber = Integer.parseInt(combineString);
if (isPrimeNumber(parseNumber)) {
primeNumberSet.add(Integer.parseInt(combineString));
}
copiedList.remove(i);
makeOtherNumber(primeNumberSet, combineString, copiedList);
}
}
public boolean isPrimeNumber(int number) {
if (number <= 1) {
return false;
}
for(int i = 2; i < number; i++) {
if(number % i == 0) {
return false;
}
}
return true;
}
'정리 > 알고리즘' 카테고리의 다른 글
탐욕법 - 큰 수 만들기 (0) | 2022.02.23 |
---|---|
완전탐색 - 카펫 (0) | 2022.02.21 |
완전탐색 - 모의고사 (0) | 2022.02.17 |
정렬 - H-Index (0) | 2022.02.16 |
정렬-가장 큰 수 (0) | 2022.02.15 |
댓글