코딩테스트(코틀린) 기초부터 연습

프로그래머스 소수찾기

리워크 2021. 4. 8. 20:50
fun solution(numbers: String): Int {
        val numbering = numbers.split("").toMutableList()
        numbering.removeFirst()
        numbering.removeAt(numbering.size-1)
        val hash = HashSet<Int>()
        searchAll(hash,numbering,"")
        var answer = 0
        for (i in hash){
            var isAnswer = true
            for (it in 2..i-2){
                if(i %it ==0){
                    isAnswer = false
                    break
                }
            }
            if(isAnswer && i >1){
                answer++
                println(i)
            }
        }

        println(answer)

        return answer
    }

    fun searchAll(hashSet : HashSet<Int>, numbers: MutableList<String>, prefix :String){
        if(prefix !== ""){ // 빈공간 아니면 더해짐
            hashSet.add(prefix.toInt())
        }
        for (i in 0 until numbers.size){ // 다음 스트링에 모든 스트링을 받아줌
            val newNumbers = mutableListOf<String>()
            for (i in numbers){
                newNumbers.add(i)
            }
            val a= prefix+ newNumbers[i]
            newNumbers.removeAt(i)

            searchAll(hashSet,newNumbers,a)
        }
    }

 

1. hash맵을 사용하면 중복되는거 막아준다더라.

그냥 distinc()를 사용해도 구분해줌.

 

이런식으로 쓰는거 몇개 더 풀어보고싶은디 찾아봐야겠따.