본문 바로가기

Learning & Theory/Algo

[ Algo ] 페이징 알고리즘

1. 전체 페이지 수

 

가. 기본공식

T:전체 게시물 수 (Total number of posts)P:페이지 별 게시물 수 (Posts per page)N:전체 페이지 수 (Number of pages)N=(T1P)+1

 

나. 언어 별 구현 코드

1) Java

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

    return totalPageCnt;
}

 

다. 증명

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

전체 페이지 수는 전체 게시물 수를 페이지 별 게시물 수로 나눈 몫에나머지가 있을 경우 1을 더해준 값이 된다.N={kifTP,k+1ifTP(단, k는 전체 게시물 수를 페이지 별 게시물 수로 나눈 몫)

T={P × kifTP,P × k + mifTP(단, k는 전체 게시물 수를 페이지 별 게시물 수로 나눈 몫, m은 전체 게시물 수를 페이지 별 게시물 수로 나눈 나머지)(즉, k는 음이 아닌 정수, m은 1이상 P미만 정수)1) if TP=> N=((P × k)1P)+1 => N=(k1P)+1 => N=(k1)+1 => N=k2) if TP=> N=((P × k)+m1P)+1 => N=(k+m1P)+1 => N=k+1

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

마지막 페이지의 게시물 수는 다음과 같다.T(N1) × P=> 0<T(N1) × PP => 0T(N1) × P1<P => T1P<(N1) × PT1 => (T1P)1<(N1)(T1P) => N1=(T1P) => N=(T1P)+1