diff --git "a/2022/Sep/week_4/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244_Lv2_\354\206\214\354\210\230\354\260\276\352\270\260_\355\225\230\353\212\230\354\235\264.swift" "b/2022/Sep/week_4/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244_Lv2_\354\206\214\354\210\230\354\260\276\352\270\260_\355\225\230\353\212\230\354\235\264.swift" new file mode 100644 index 0000000..5389b81 --- /dev/null +++ "b/2022/Sep/week_4/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244_Lv2_\354\206\214\354\210\230\354\260\276\352\270\260_\355\225\230\353\212\230\354\235\264.swift" @@ -0,0 +1,44 @@ +// +// main.swift +// Lv2_소수 찾기 +// +// Created by neuli on 2022/09/27. +// + +import Foundation + +var result: Set = [] +var number: [String] = [] +var visited: [Bool] = [] + +func solution(_ numbers: String) -> Int { + + number = Array(numbers).map { String($0) } + visited = Array(repeating: false, count: number.count) + dfs("") + + return result.count +} + +func dfs(_ num: String) { + if let intNum = Int(num), isPrime(intNum) { + print(intNum) + result.insert(intNum) + } + for i in 0.. Bool { + if num == 1 || num == 0 { return false } + if num == 2 { return true } + for i in 2.. Int64 { + + let times: [Int64] = times.sorted(by: <).map { Int64($0) } + var start: Int64 = 0 + var end: Int64 = times.last! * Int64(n) + + while start < end { + let mid = (start + end) / Int64(2) + var count: Int64 = 0 + times.forEach { + count += mid / $0 + } + if n <= count { + end = mid + } else { + start = mid + Int64(1) + } + } + + return start +} + +// https://school.programmers.co.kr/questions/21374