avatar
Published on

Codility - Tape Equilibrium

Author
  • avatar
    Name
    yceffort

Tape Equilibrium

문제

길이 N의 배열을 μž„μ˜λ‘œ λ‘κ°œλ‘œ μͺΌκ°œκ³ , μ΄λ ‡κ²Œ ν•΄μ„œ 생긴 λ‘λ°°μ—΄μ˜ 합을 각각 κ΅¬ν• λ•Œ, 이 μ„œλ‘œ λ‘ν•©μ˜ 차이가 κ°€μž₯ μž‘μ€ 경우λ₯Ό κ΅¬ν•˜λΌ.

A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
이경우 λ„€κ°€μ§€λ‘œ μͺΌκ°€ 수 μžˆλŠ”λ°

P = 1, difference = |3 βˆ’ 10| = 7
P = 2, difference = |4 βˆ’ 9| = 5
P = 3, difference = |6 βˆ’ 7| = 1
P = 4, difference = |10 βˆ’ 3| = 7

μ—¬κΈ°μ„œ 닡은 1이닀

풀이

function solution(A) {
  // 쒌츑 SUM
  let leftSum = 0
  // 우츑 SUM
  let rightSum = A.reduce((a, b) => a + b, 0)

  // 아직 닡은 μ—†μŒ
  let answer = null

  // 배열을 μˆœνšŒν•˜λ©΄μ„œ
  for (let i = 0; i < A.length - 1; i++) {
    // μ™Όμͺ½ SUM은 ν•˜λ‚˜μ”© μΆ”κ°€
    leftSum += A[i]
    // 였λ₯Έμͺ½ SUM은 ν•˜λ‚˜μ”© 제거
    rightSum -= A[i]
    // λ‘˜μ˜ 차이 계산
    const diff = Math.abs(leftSum - rightSum)
    // λ‘˜μ˜ 차이가 ν•˜λ‚˜λ„ 계산이 μ•ˆλ˜μ–΄ μžˆκ±°λ‚˜, ν˜„μž¬ 값보닀 차이가 적닀면 κ°±μ‹ 
    if (answer === null || answer > diff) {
      answer = diff
    }
  }
  return answer
}

https://app.codility.com/demo/results/trainingRC4CVP-VPY/