1. λ¬Έμ
2. μ μΆλ ₯
3. μ μΆλ ₯ μμ
4. λ¬Έμ μ€κ³
- n(100,000)κ°μ μ«μμ λν΄ q(100,000)λ²μ νμμ νκ²λλ κ²½μ°, ν λ² νμν λλ§λ€ μ΅μ μ κ²½μ° 100,000λ²μ qλ² νκ² λλ©΄,
- 100,000 * 100,000 = 10,000,000,000 μ΄λ―λ‘, μκ°μμ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ.
- λ°λΌμ λ€λ₯Έ νμ μκ³ λ¦¬μ¦μ ν΅ν΄ λ¬Έμ λ₯Ό ν΄κ²°ν΄μΌ νλλ° μμΈν μ΄ν΄λ³΄λ©΄ μ΄λ―Έ μ λ ¬λμ΄ μλ μμ΄μ΄λ―λ‘,
- μ΄μ§νμμ ν΅ν΄ O(log n)μ μκ°λ³΅μ‘λλ‘ νμμ ν μ μκ³ , μ΄λ₯Ό qλ² λ°λ³΅νμ¬ O(q log n)μ μκ°λ³΅μ‘λλ‘ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ
5. μ 체 μ½λ
//MARK: - μ΄μ§νμ
//MARK: - Framework
import Foundation
//MARK: - Function
func binarySearch(_ array: [Int], _ start: Int, _ end: Int, _ value: Int) -> Bool {
if start >= end {
return array[start] == value ? true : false
}
let mid: Int = (start + end) / 2
if array[mid] == value {
return true
}
return array[mid] < value ? binarySearch(array, mid + 1, end, value) : binarySearch(array, start, mid - 1, value)
}
func solution() -> Void {
//MARK: - Input
guard let input = readLine()?.components(separatedBy: " ") else { return }
guard let inputArray = readLine()?.components(separatedBy: " ") else { return }
guard let inputQuestions = readLine()?.components(separatedBy: " ") else { return }
let n: Int = input.map{ Int($0) }[0] ?? 0
let _: Int = input.map { Int($0) }[1] ?? 0
let array: [Int] = inputArray.map { Int($0) ?? 0 }
let questions: [Int] = inputQuestions.map { Int($0) ?? 0 }
var answer: String = ""
//MARK: - Process
for question in questions {
answer += binarySearch(array, 0, n - 1, question) ? "YES\n" : "NO\n"
}
//MARK: - Output
print(answer)
}
solution()
μ 체μ½λλ μ¬κΈ°μμ νμΈν μ μμ΅λλ€.
'Swift Data Structure And Algorithm > Binary Search' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ무 μλ₯΄κΈ° (0) | 2022.04.02 |
---|---|
2μ°¨μ μ λ΅ μΆμΈ‘ (0) | 2022.04.02 |
λ μ©μ‘ (0) | 2022.04.02 |
μ«μ κ°μ μΈκΈ° (0) | 2022.04.02 |
μ«μλ°μ€ (0) | 2022.04.02 |