Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[문제풀이] Level2 소수찾기 본문
소수찾기
🪅 KeyPoint: 문자열을 쪼개서 순서 상관있게 조합할 수 있느냐 (순열) => recursive
🪅 KeyPoint: 중복을 어떻게 제거할 것이냐 => HashSet<>()
🪅 KeyPoint: 소수 찾는 알고리즘을 구현할 수 있느냐 => isPrime()

⚠️ String에 +연산자를 이용하면 char를 붙일 수 있다.
⚠️ .substring(i+1)은 i+1번째부터 마지막까지의 부분문자열을 의미한다.
⚠️ .substring(i+1)은 i+1번째부터 마지막까지의 부분문자열을 의미한다.
import java.util.*;
class Solution {
Set<Integer> numberSet = new HashSet<>();
public void recursive(String comb, String others) {
if(!comb.equals("")) {
int num = Integer.parseInt(comb);
numberSet.add(num);
}
for(int i = 0; i < others.length(); i++) {
recursive(comb + others.charAt(i), others.substring(0,i) + others.substring(i+1));
}
}
public boolean isPrime(int num) {
int end = (int)Math.sqrt(num);
for(int i = 2; i <= end; i++) {
if(num % i == 0) return false;
}
return true;
}
public int solution(String numbers) {
int answer = 0;
recursive("", numbers);
System.out.println(numberSet);
Iterator<Integer> it = numberSet.iterator();
while(it.hasNext()) {
int num = it.next();
if(num > 1 && isPrime(num)) answer++;
}
return answer;
}
}
'코딩 테스트 > 문제풀이' 카테고리의 다른 글
[문제풀이] Level2 타겟넘버 (0) | 2023.02.24 |
---|---|
[문제풀이] Level2 카펫 (0) | 2023.02.23 |
[문제풀이] Level1 모의고사 (0) | 2023.02.23 |
[문제풀이] Level2 모음사전 (1) | 2022.12.30 |
[문제풀이] Level2 피로도 (0) | 2022.12.28 |
Comments