var v = [1, 2, 3]
func permutation(n: Int, r: Int, depth: Int) {
if r == depth {
print( v.map { String($0) }.joined(separator: " "))
return
}
for i in depth..<n {
v.swapAt(i, depth)
permutation(n: n, r: r, depth: depth + 1)
v.swapAt(i, depth)
}
return
}
permutation(n: 3, r: 3, depth: 0)
๋ฐ๋ณต๋ฌธ ์ฌ์ฉ
let n = 5, r = 3, a = [1, 2, 3, 4, 5]
// r=3์ด๋ฏ๋ก 3์ค for๋ฌธ -> r์ด ์์ ๋์๋ง ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์
for i in 0..<n {
for j in i+1 ..< i {
for k in j+1 ..< j {
print("\(i), \(j), \(k)
}
}
}
// ์์๋ง ๋ค๋ฅผ ๋ฟ
for i in 0..<n {
for j in 0..<i {
for k in 0..<j {
print("\(i), \(j), \(k)
}
}
}
์ต๋๊ณต์ฝ์
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ ์ด์ฉ
func gcd(_ a: Int, _ b: Int) -> Int {
if b == 0 { return a }
return gcd(b, a%b)
}
์ต์๊ณต๋ฐฐ์
func gcd(_ a: Int, _ b: Int) -> Int {
if b == 0 { return a }
return gcd(b, a%b)
}
func lcm(_ a: Int, _ b: Int) -> Int {
return a * b / gcd(a, b)
}
์์ ์ฐพ๊ธฐ
์๋ผํ ์คํ ๋ค์ค์ ์ฒด(n <= 1,000,000)
func primeNumbers(_ n: Int) -> [Int] {
var numbers = [Bool](repeating: true, count: n+1)
var result = [Int]()
for i in 2...n {
if numbers[i] {
for j in stride(from: i*2, to: n, by: i) {
numbers[j] = false
}
}
}
for i in 2...n {
if numbers[i] { result.append(i) }
}
return result
}
func primeNumbers(_ n: Int) -> Set<Int> {
var numbers = Set(2...n)
for i in 2...n {
if numbers.contains(i) {
numbers.subtract(Set(stride(from: i*2, to: n, by: i)))
}
}
return numbers
}
์ ๊ณฑ๊ทผ ํ์ฉ
func isPrimeNumber(_ n: Int) -> Bool {
if n < 2 { return false }
if n == 2 { return true }
if n % 2 == 0 { return false }
for i in 2...n {
**if !(i * i <= n) { break }**
if n%i == 0 { return false }
}
return true
}
**import Foundation**
func isPrimeNumber(_ n: Int) -> Bool {
if n < 4 { return n >= 2 }
if n % 2 == 0 { return false }
for i in 2...**Int(sqrt(Double(n)))** {
if n % i == 0 { return false }
}
return true
}
๋์ ํฉ
var cards = [0]
var prefix = [0]
let input = readLine()!.split(separator: " ").map { Int($0)! }
let (n, m) = (input[0], input[1])
cards.append(contentsOf: readLine()!.split(separator: " ").map { Int($0)! })
for i in 1...n {
prefix.append(cards[i] + **prefix[i-1]**)
}
for _ in 1...m {
let index = readLine()!.split(separator: " ").map { Int($0)! }
let (a, b) = (index[0], index[1])
print(prefix[b] - prefix[a-1])
}