본문 바로가기
공부/Algorithms w.Java

프로그래머스-소수찾기; Java

by thegreatjy 2022. 2. 17.
728x90

https://programmers.co.kr/learn/courses/30/lessons/42839

 

코딩테스트 연습 - 소수 찾기

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이

programmers.co.kr

import java.util.*;

class Solution {
    static Set<Integer> primes = new HashSet<>();
	public int solution(String numbers) {
        int answer = 0;
        boolean[] visited = new boolean[numbers.length()];
        
        func(numbers, "", 0, visited);
        answer=primes.size();
        
        return answer;
    }
	
	public void func(String numbers, String num, int level, boolean[] visited) {
		if(level>=numbers.length()) {
			return;
		}
		for(int i=0;i<numbers.length();i++) {
			if(!visited[i]) {
				visited[i]=true;
				num=num.concat(Character.toString(numbers.charAt(i)));
				int temp = Integer.parseInt(num);
				if(check(temp))	primes.add(temp);	
				func(numbers, num, level+1, visited);
				visited[i]=false;
				num=num.substring(0, num.length()-1);
			}
		}
	}
	
	//check num whether prime or not
	public boolean check (int num) {
		if(num<2)	return false;
		if(num==2)	return true;
		for(int i=2;i<num;i++) {
			if(num % i ==0) return false;
		}
		return true;
	}
}

 

- 소수 찾기

- 재귀 사용 안하고 하는 방법

공부하기!

728x90