- Published on
Codility - Min Avg Two Slice
- Author
- Name
- yceffort
Min Avg Two Slice
λ¬Έμ
κΈΈμ΄κ° NμΈ λΉμ΄μμ§ μμ λ°°μ΄ Aκ° μ£Όμ΄μ§λ€. νμμ μ«μ P, Qμ λ²μλ 0 <= P < Q < N
λ€. μ£Όμ΄μ§ Pμ Qλ‘ Aλ°°μ΄μ sliceνλ€. (μ΅μ 2κ°μ΄μμ μμκ° μμ΄μΌ νλ€.) (P, Q)λ A[P] + A[P + 1] + ... + A[Q]
μ΄λ©°, (P, Q)μ νκ· μ (A[P] + A[P + 1] + ... + A[Q]) / (Q β P + 1)
λ€. νκ· μ΄ μ΅μκ° λλ Pμ κ°μ ꡬνλΌ.
Aκ° μλμ κ°μ΄ μ΄λ£¨μ΄μ Έμλ€κ³ κ°μ νμ.
A[0] = 4
A[1] = 2
A[2] = 2
A[3] = 5
A[4] = 1
A[5] = 5
A[6] = 8
slice (1, 2), νκ· μ (2 + 2) / 2 = 2;
slice (3, 4), νκ· μ (5 + 1) / 2 = 3;
slice (1, 4), νκ· μ (2 + 2 + 5 + 1) / 4 = 2.5.
νμ΄
function solution(A) {
let min = Number.MAX_SAFE_INTEGER
let minIndex = 0
for (let i = 0; i < A.length - 1; i++) {
let twoSum = (A[i] + A[i + 1]) / 2
if (min > twoSum) {
min = twoSum
minIndex = i
}
if (i + 2 <= A.length - 1) {
let threeSum = (A[i] + A[i + 1] + A[i + 2]) / 3
if (min > threeSum) {
min = threeSum
minIndex = i
}
}
}
return minIndex
}
ν΄μ€
μ²μμ κ³ λ―Όμ λ§μ΄ νλλ°, λ¬Έμ μ ννΈκ° μμλ€. μμμμ 2κ°μ νκ· , 4κ°μ νκ· μ ꡬνλ μμ λ₯Ό 보μ¬μ£Όμλλ°, 4κ°μ΄μμ μμμ νκ· μ μ΅μκ°μ 2~3κ° λ΄μμ κ²°μ λ λ€λ μ¬μ€μ΄λ€. κ·Έ μ¬μ€λ§ μΈμ§νκ² λλ©΄, μ½κ² νμ μλ λ¬Έμ λ€.