youngjaeLee1026
2022. 4. 2. 01:04
1. λ¬Έμ
2. μ μΆλ ₯
3. μ μΆλ ₯ μμ
4. λ¬Έμ μ€κ³
- O(N^2) μμ νμμ ν΅ν΄ λ¬Έμ λ₯Ό ν΄κ²°νκ² λλ©΄ 100,000 * 100,000μ΄λ―λ‘ μκ°μμ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ
- μ°λ¦¬κ° μ μ μλ μλ 1 ~ N * N λ²μμ μμ΄κ³ , ν΄λΉ λ²μμ μκ° λͺ λ²μ§Έ μμΈμ§ O(N)μ μκ°λ³΅μ‘λλ‘ μμλΌ μ μμ
- NNλ¨νμμ 1λΆν° NκΉμ§ μ€, 1 * Nμ΄ νμ¬ μλ³΄λ€ μκ² λλ©΄ νμ¬μ λ¨κ³μμλ νμ¬ μ«μλ³΄λ€ μμ μ«μκ° Nκ°κ° μλ€λ κ²μ μ μ μκ³ ,
- νμ¬ μ«μκ° νμ¬ λ¨κ³λ‘ λλμ΄ λ¨μ΄μ§κ² λλ€λ©΄ κ·Έ λͺ«μμ μκΈ° μμ μ μ μΈνκ² λλ©΄ νμ¬ μ«μλ³΄λ€ μμ μ«μμ κ°μλ₯Ό μ μ μκ³ ,
- λλμ΄ λ¨μ΄μ§μ§ μλλ€λ©΄, κ·Έ λͺ«μ΄ νμ¬ μ«μλ³΄λ€ μμ μ«μμ κ°μμμ μ μ μμ
- μ 3 ~ 5 κ³Όμ μ κ°μλ₯Ό λͺ¨λ λν΄ + 1μ λ°ννκ² λλ©΄ O(N)λ§μ 1 ~ N * Nμ«μμ λ²μμ ν΄λΉνλ κ°κ°μ μ«μκ° λͺ λ²μ§Έ μ«μμΈμ§ μ μ μμ
- μ΄λ₯Ό ν΅ν΄ νμ¬ μ°Ύκ³ μ νλ μ«μμ μμΉ Kμ λΉκ΅νμ¬ μ΄μ§νμμ ν΅ν΄ O(N log N)μ μκ°λ³΅μ‘λλ‘ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ
5. μ 체 μ½λ
//MARK: - NNλ¨ν
//MARK: - Framework
import Foundation
//MARK: - Function
func getOrder(_ N: Int, _ number: Int64) -> Int64 {
var result: Int64 = 0
for i in 1...N {
if i * N < number {
result += Int64(N)
} else {
result += number % Int64(i) == 0 ? number / Int64(i) - 1 : number / Int64(i)
}
}
result += 1
return result
}
func binarySearch(_ N: Int, _ start: Int64, _ end: Int64, _ K: Int64) -> Int64 {
if start + 1 >= end {
return start
}
let mid: Int64 = (start + end) / 2
return getOrder(N, mid) <= K ? binarySearch(N, mid, end, K) : binarySearch(N, start, mid, K)
}
func solution() -> Void {
//MARK: - Input
guard let N: Int = Int(readLine() ?? "0") else { return }
guard let K: Int64 = Int64(readLine() ?? "0") else { return }
//MARK: - Process
let result: Int64 = binarySearch(N, 1, Int64(N * N + 1), K)
//MARK: - Output
print(result)
}
solution()
μ 체μ½λλ μ¬κΈ°μμ νμΈν μ μμ΅λλ€.