개발 무지렁이

[문제풀이] Level2 소수찾기 본문

코딩 테스트/문제풀이

[문제풀이] Level2 소수찾기

Gaejirang-e 2022. 12. 25. 12:27

소수찾기


🪅 KeyPoint: 문자열을 쪼개서 순서 상관있게 조합할 수 있느냐 (순열) => recursive
🪅 KeyPoint: 중복을 어떻게 제거할 것이냐 => HashSet<>()
🪅 KeyPoint: 소수 찾는 알고리즘을 구현할 수 있느냐 => isPrime()
⚠️ String에 +연산자를 이용하면 char를 붙일 수 있다.
⚠️ .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