Algorithm lesson learned - array


알고리즘 문제를 풀면서 인사이트를 얻은 내용들을 정리합니다.

구간 처리

어떤 구간을 처리하는 문제는 해당 구간을 모두 처리할려 하지말고, 구간의 앞과 끝 부분만 다룰 수 있는지 생각해보자.

auxiliary array (difference array) 을 사용하여 범위 업데이트 작업을 효율적으로 적용할 수 있다. 범위 내의 모든 요소를 직접 업데이트하는 대신, 범위의 시작점과 끝점을 표시하고 나중에 prefix sum을 사용하여 업데이트를 적용한다.

예를 들어, 주어진 배열에 대해 [0, 4] 구간에 +1을 적용하고, [2, 5] 구간에 -1을 적용한다고 가정해보자.

  • auxiliary 배열의 [0] 인덱스에 +1을, [5] 인덱스에 -1을 적용하고, [2] 인덱스에 +1을, [6] 인덱스에 -1을 적용
  • 각 요소가 원래 배열에서 얼마나 증가하거나 감소했는지를 결정하기 위해 prefix sum을 사용하여 누적 합을 계산

관련 문제




    Enjoy Reading This Article?

    Here are some more articles you might like to read next:

  • Deepseek-R1 모델
  • 학습할때 메모리가 터진다고? Cut Your Losses!
  • GRPO 대신 DAPO: RL 최적화로 LLM 추론 능력 끌어올리기
  • DeepSeek-V3 기술 요약
  • python accelerate 라이브러리 함수 조사기