프로그래머스 LV2. 소수 찾기
✅ 소수 찾기를 재귀를 통해서 해결하였음
걸린 시간은 거의 한 2시간 넘게 걸렸는데, 재귀를 사용해서 문제를 푼게 처음이라서 그렇다.
다른 사람들은 dfs, bfs, 순열 등등 많던데, 나는 이게 제일 간편한 것 같다.
재귀 해보니까 그렇게 어렵지 않다 ㅎㅎ
import Foundation
var results: Set<Int> = []
func solution(_ numbers:String) -> Int {
var count = 0
for len in 1...numbers.count {
reculsive(list: "", remain: numbers, len: len)
}
results.remove(0)
results.remove(1)
results.forEach { result in
var flag = true
// 소수 판별
for number in stride(from: 2, to: result, by: 1) {
if result % Int(number) == 0 {
flag = false
break
}
}
if flag { count += 1 }
}
return count
}
func reculsive(list: String , remain: String, len: Int) {
if list.count == len {
results.insert(Int(list)!)
return
}
for i in 0..<remain.count {
var list = list
let index = remain.index(remain.startIndex, offsetBy: i)
let str = remain[index]
list = "\(list)\(str)"
var arr = remain
arr.remove(at: index)
reculsive(list: list, remain: arr, len: len)
}
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[Swift] 프로그래머스 LV2. 삼각 달팽이 (0) | 2022.04.01 |
---|---|
[Swift] 프로그래머스 LV2. 피로도 (0) | 2022.04.01 |
[Swift] BOJ 11726 2 x n 타일링 (0) | 2022.04.01 |
[Swift] BOJ 10610번 30 (0) | 2022.03.22 |
[Swift] BOJ 1931회의실 배정 (0) | 2022.03.22 |