티스토리 뷰

Algorithm

Algorithm) Programmers- 소수 찾기 swift

행복하고 싶은 사람 2022. 10. 31. 11:23

https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=swift# 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

완전 탐색 문제였습니다

numbers의 길이가 1이상 7이하인 것을 보고 next_permutation돌려서 완전탐색하면 되겠다 생각났지만 swift에는 c++처럼 next_permutation이 없기때문에 직접 구현 해야 했습니다. 구현하는 과정은 https://gimjinging.tistory.com/133 블로그를 참고했습니다!

나중에 다시 풀어봐야할 문제!

 

프로그래머스 - 소수 찾기 (레벨2, swift)

문제 출처 programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려

gimjinging.tistory.com

import Foundation

func isPrime(_ n: Int) -> Bool {
    if n < 2 {
        return false
    } else if n == 2 {
         return true
    } else {
        for i in 2...Int(sqrt(Double(n))) + 1 {
            if n % i == 0 {
                return false
            }
        }
        return true
    }
}

func solution(_ numbers:String) -> Int {
    var arr = numbers.map{$0}
    var result: Set<Int> = []
    var checkList = [Int](repeating: 0, count: arr.count)
    var number = ""
    
    func DFS(_ depth: Int,_ str: String, _ cnt: Int) {
        if depth == cnt {
            if let number = Int(str) {
                if isPrime(number) {
                    result.insert(number)
                }
            }
        } else {
            for i in 0..<arr.count {
                if checkList[i] == 0 {
                    number += String(arr[i])
                    checkList[i] = 1
                    DFS(depth + 1, number, cnt)
                    checkList[i] = 0
                    number = str
                }
            }
        }
    }
    for i in 1...arr.count {
        DFS(0, "", i)
    }
    return result.count
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함