본문으로 건너뛰기
yceffort
PostsSeriesTagsAbout🧪 Research
EN

Tweaks

theme
accent palette
film grain
minimal mode
BACK TO INDEX
◆ ESSAY
--min
--year
KOoriginal

mailMail icongithubtwitter
yceffort
•
© 2026
•
https://yceffort.kr
BACK TO INDEX
◆ ESSAY

Codility - Tape Equilibrium

avatar
yceffort
2020-06-23 · 2분
2min
2020year
KOoriginal
algorithm

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/

관련 글

  • #javascript#algorithm

    자바스크립트로 메모이제이션 구현하기

    까먹지 않게 기억해두기

    2020-11-23·1분
  • #algorithm

    프로그래머 기초 수학 2-3 - 유리수, 무리수, 실수

    유리수, 무리수, 실수

    2020-07-29·5분
  • #algorithm

    프로그래머 기초 수학 2-2 - 기수법

    기수법

    2020-07-24·3분
  • #algorithm#mathematics

    프로그래머 기초 수학 2-1 - 정수

    정수

    2020-07-23·4분

새 글을 놓치고 싶지 않으시다면 RSS로 구독해 주세요.

RSS 구독 →

yceffort — 프론트엔드 엔지니어입니다. 발표·기술 자문·기고 문의는 이곳에서 받고 있습니다.

← Back to the blogIssue on GitHub →