본문 바로가기

Algo

[ Algo ] 페이징 알고리즘

1. 전체 페이지 수

 

가. 기본공식

$$
\begin{align}
&T : \text{전체 게시물 수 (Total number of posts)} \newline
&P : \text{페이지 별 게시물 수 (Posts per page)} \newline
&N : \text{전체 페이지 수 (Number of pages)} \newline
\newline
&N = \left\lfloor\left( \frac{T - 1}{P} \right)\right\rfloor + 1
\end{align}
$$

 

나. 언어 별 구현 코드

1) Java

public static int getTotalPageCnt(int totalPostCnt, int pagePerPostCnt)
{
    int totalPageCnt = (totalPostCnt - 1) / pagePerPostCnt + 1;

    return totalPageCnt;
}

 

다. 증명

1) 증명방법1(답을 통해 명제를 유도)

$$
\begin{align}
&\text{전체 페이지 수는 전체 게시물 수를 페이지 별 게시물 수로 나눈 몫에}\newline
&\text{나머지가 있을 경우 1을 더해준 값이 된다.}\newline
&\newline
&N = 
\begin{cases}
&k&\text{if}&T \mid P, \newline
&k + 1&\text{if}&T \nmid P \newline\end{cases} \newline
&\newline
&\text{(단, }k\text{는 전체 게시물 수를 페이지 별 게시물 수로 나눈 몫)}
\end{align}
$$

$$
\begin{align}
&T = 
\begin{cases} 
&P\ \times\ k & \text{if}&T \mid P, \newline
&P\ \times\ k\ +\ m & \text{if}&T \nmid P \newline
\end{cases} \newline
&\newline
&\text{(단, }k\text{는 전체 게시물 수를 페이지 별 게시물 수로 나눈 몫, }m\text{은 전체 게시물 수를 페이지 별 게시물 수로 나눈 나머지)} \newline
&\text{(즉, }k\text{는 음이 아닌 정수, }m\text{은 }1\text{이상 }P\text{미만 정수)}
&\newline
&\newline
&\text{1) if } T \mid P \newline
&\newline
&\text{=> }\newline
&\newline
&N = \left\lfloor\left( \frac{\left(P\ \times\ k\right) - 1}{P} \right)\right\rfloor + 1\text{ => }\newline
&\newline
&N = \left\lfloor\left( k - \frac{1}{P} \right)\right\rfloor + 1\text{ => }\newline
&\newline
&N = \left( k - 1\right) + 1\text{ => }\newline
&\newline
&N =k \newline
&\newline
&\newline
&\text{2) if } T \nmid P \newline
&\newline
&\text{=> }\newline
&\newline
&N = \left\lfloor\left( \frac{\left(P\ \times\ k\right) + m - 1}{P} \right)\right\rfloor + 1\text{ => }\newline
&\newline
&N = \left\lfloor\left( k + \frac{m - 1}{P} \right)\right\rfloor + 1\text{ => }\newline
&\newline
&N =k + 1 \newline
\end{align}
$$

2) 증명방법2(명제를 통해 답을 유도)

$$
\begin{align}
&\text{마지막 페이지의 게시물 수는 다음과 같다.}\newline
&\newline
&T - \left(N - 1\right)\ \times\ P \newline
&\newline
&\text{=> }\newline
&\newline
&0 < T - \left(N - 1\right)\ \times\ P \leqq P \text{ => }\newline
&\newline
&0 \leqq T - \left(N - 1\right)\ \times\ P - 1 < P \text{ => }\newline
&\newline
&T - 1 - P < \left(N - 1\right)\ \times\ P \leqq T - 1 \text{ => }\newline
&\newline
&\left( \frac{T - 1}{P} \right)- 1 < \left(N - 1\right) \leqq \left( \frac{T - 1}{P} \right) \text{ => }\newline
&\newline
&N - 1 = \left\lfloor\left( \frac{T - 1}{P} \right)\right\rfloor \text{ => }\newline
&\newline
&N = \left\lfloor\left( \frac{T - 1}{P} \right)\right\rfloor + 1
\end{align}
$$