for() 문 쓰면서 생각난 간단한 내용을 기술함.

기본형

\(n\)개의 데이터가 있고, 이를 \(i\)로 순회하는 경우 순회하는 범위는 다음과 같다.
\([0,n-1]\)

그럼 \(i\)가 선회하는 최대 범위는 아래와 같다.

\[\begin{align*} i & \le n-1\\ i & \lt n\\ \end{align*}\]

이것을 C로 작성한 것이 바로 흔하게 볼 수 있는 아래 한 줄.

for (int i = 0; i < n; ++i)

데이터를 m개 단위로 처리

\(n\)개의 데이터가 있고, 이를 \(i\)로 순회하며 \(m\)개씩 처리하는 경우의 범위는 아래와 같다.

\[\begin{align} i+m-1 & \le n-1\\ i+m & \le n\\ i & \le n-m\\ i & \lt (n-m+1)\\ \end{align}\]

이것을 C로 작성하면 아래와 같다.

for (int i = 0; i < n - m + 1; i += m)

데이터를 m개 단위로 처리하며 마지막에 l개를 남김

\(n\)개의 데이터가 있고, 이를 \(i\)로 순회하며 \(m\)개씩 처리하되, 마지막에 \(l\)개를 남기는 경우의 범위는 아래와 같다.

\[\begin{align} i+m-1 & \le n-l-1\\ i+m & \le n-l\\ i & \le n-m-l\\ i & \lt (n-m-l+1) \end{align}\]

이것을 C로 작성하면 아래와 같다.

for (int i = 0; i < n - m - l + 1; i += m)

특별한 내용은 아니지만, 한번쯤 정리해두고 싶어서 기록함.

카테고리:

업데이트: