본문 바로가기
Programming/Python

[Python] 파이썬 문제 : 게시판 페이징하기

by EunjiBest 2022. 3. 16.

[Python] 파이썬 문제 : 게시판 페이징하기

 

 

 

문제 : 
A씨는 게시판 프로그램을 작성하고 있다. 그런데 게시물의 총 건수와 한 페이지에 보여 줄 게시물 수를 입력으로 주었을 때 총 페이지 수를 출력하는 프로그램이 필요하다고 한다.

 

필요한데 뭐 어쩌라고? 라는 느낌이 들게

문제가 끝이 난다..

 

일단 페이징이란? 문제에 써있는대로 게시판의 페이지 수를 보여주는 것을 페이징이라고 한다.

 

먼저 인풋값, 아웃풋 값을 생각해보자.

 

인풋 : 게시물의 총 건수, 한 페이지에서 보여 줄 게시물의 수

아웃풋 :  총 페이지의 수

 

 

만약,

게시물의 총 건수가 5건이고, 한 페이지에서 보여 줄 게시물의 수가 10개이면 총 페이지 수는 당연히 1이되겠다.

또한,

게시물의 총 건수가 15건이고, 한 페이지에서 보여줄 게시물 수가 10이라면 총 페이지 수는 2가 된다.

 

이를 

표로 정리해보자.

 

게시물의 총 건수(m) 페이지당 보여 줄 게시물의 수 (n) 총 페이지 수
5 10 1
15 10  2
25 10 3
30 10 3

 

이를 식으로 정리하면

총 페이지의 수 =  (총 건수 / 한 페이지당 보여 줄 건수) + 1

 

 

그럼 식을 만들어 보았으니

이대로 코딩을 시작해보자.

 

 

>>> def getTotalPage(m,n):
 		 return m // n+1

>>> print(getTotalPage(5,10))
>>> print(getTotalPage(15,10))
>>> print(getTotalPage(25,10))
>>> print(getTotalPage(30,10))

1
2
3
4

 

getTotalPage라는 함수를 m과 n의 인자를 받아서 만들어보았다

리턴값은 위에 세웠던 식대로 m 나누기(소수점 버리는 연산자) n + 1이다.

 

그런데 여기서 이상한 점.

왜 30개의 글이 10개씩 있는데 페이지의 수는 3개가 아닌, 4개가 되는 것일까?

 

우린 이걸 바로 오류라고 한다..

코드를 잘못 짠 것.

 

 

이 오류는 나머지 값이 0이 되었을 때 발생한 것으로 추정된다.

그럼 나머지 값이 0이 되었을 때 m나누기 n을 하여, 1을 더하지 않은 상태로 만들어준다.

 

>>> def getTotalPage(m,n):
  		if m%n ==0:
    		return m//n
 		 else:
   			 return m // n+1

>>> print(getTotalPage(5,10))
>>> print(getTotalPage(15,10))
>>> print(getTotalPage(25,10))
>>> print(getTotalPage(30,10))

1
2
3
3

 

if문을  추가해서 

나머지가 0일 경우에는 나누기의 몫만 돌려주고,

그렇지 않을 경우에는

+1을 해주는 식으로 변경했다.

 

출력을 해보았더니, 

정상적으로 출력이 되는 것을 확인할 수 있다.

 

 

이렇게 간단한 함수를 만들어 보았는데

그냥

잠시 잡소리를 하자면

요즘 초딩들한테 코딩을 가르치는 이유는

단순히 프로그래밍 문법이 아닌 

이 문제처럼

하나씩 사고해가는 과정을 길러주기 위해서이지 않을까..?

싶다...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이 포스팅은 '점프 투 파이썬'을 참고했습니다.

반응형

댓글