문제 : https://programmers.co.kr/learn/courses/30/lessons/42839
코딩테스트 연습 - 소수 찾기
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이
programmers.co.kr
class Solution { val arr = arrayListOf<String>() val numberArr = mutableSetOf<Int>() fun solution(numbers: String): Int { var answer = 0 // 전체 수 조합 구하기 for(i in 0 until arr.size){ val visit = Array<Int>(100){0} visit[i] = 1 find(visit,numbers[i].toString(),numbers.length,1) } // 소수 판별 for(i in numberArr){ var count = 0 for(j in 2 .. i){ if(i%j == 0) count++ } if(count==1){ answer++ } } return answer } fun find(visit: Array<Int>, str: String, size: Int, count: Int){ // 탐색 할 때마다 결과값 add numberArr.add(str.toInt()) // 최대 길이일 때 리턴 if(count == size){ return } // DFS for(j in 0 until size){ if(visit[j] == 0){ visit[j] = 1 find(visit,str+arr[j],size,count+1) visit[j] = 0 } } } }
만들 수 있는 모든 조합을 구한 후, Int형태로 저장하여 011등의 0값을 제거하고, Set에 넣어 중복값을 제거하여 그 값들 사이의 소수를 구하였다.
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.