[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을 해주는 식으로 변경했다.
출력을 해보았더니,
정상적으로 출력이 되는 것을 확인할 수 있다.
이렇게 간단한 함수를 만들어 보았는데
그냥
잠시 잡소리를 하자면
요즘 초딩들한테 코딩을 가르치는 이유는
단순히 프로그래밍 문법이 아닌
이 문제처럼
하나씩 사고해가는 과정을 길러주기 위해서이지 않을까..?
싶다...

이 포스팅은 '점프 투 파이썬'을 참고했습니다.
'Programming > Python' 카테고리의 다른 글
[BAEKJOON] 드디어 나도 백준 문제풀기 시작! 백준 Python 1000번~1001번 / A+B / A-B (7) | 2022.03.21 |
---|---|
[Python] 파이썬 문제 : 간단한 메모장 만들기 (12) | 2022.03.17 |
[Python] 파이썬 문제 : 3과 5의 배수 합하기 (6) | 2022.03.14 |
[Python] 점프 투 파이썬 연습문제 풀이 5장 (5) | 2022.03.12 |
[Python] 파이썬 내장함수 모음 2탄 hex / id / input / int / isinstance / len / list / map / max / min / oct / open (14) | 2022.03.09 |
댓글