Python/코딩도장 풀이 모음
[코딩도장] [Lv.1] 게시판 페이징
Dailybook406
2022. 5. 23. 22:46
[ 문제 ]
A씨는 게시판 프로그램을 작성하고 있다.
A씨는 게시물의 총 건수와 한 페이지에 보여줄 게시물수를 입력으로 주었을 때 총 페이지수를 리턴하는 프로그램이 필요하다고 한다.
입력 : 총건수(m), 한페이지에 보여줄 게시물수(n) (단 n은 1보다 크거나 같다. n >= 1) 출력 : 총페이지수
A씨가 필요한 프로그램을 작성하시오.
예) 프로그램 수행 시 다음과 같은 결과값이 나와야 함.
m n 출력 0 1 0 1 1 1 2 1 2 1 10 1 10 10 1 11 10 2
[ 풀이 ]
# My solution
def paging(x,y) : #1
if x == 0 : #2
return 0
elif x % y == 0 :
return x // y
else :
return x // y + 1
while True : #3
print('게시물의 총 갯수와 한페이지에 보여줄 게시물의 수를 띄어서 입력해주세요.')
m,n = map(int,input().split()) #4
if n >= 1 : #5
print(paging(m,n))
break
else :
print('''*** n의 값을 정확히 입력해주세요.***\nn은 1보다 크거나 같은 정수입니다.''')
print()
continue
실행결과
# 입력1
게시물의 총 갯수와 한페이지에 보여줄 게시물의 수를 띄어서 입력해주세요.
0 1
0 # 출력값1
# 입력2
게시물의 총 갯수와 한페이지에 보여줄 게시물의 수를 띄어서 입력해주세요.
2 1
2 # 출력값2
# 입력3
게시물의 총 갯수와 한페이지에 보여줄 게시물의 수를 띄어서 입력해주세요.
11 10
2 # 출력값3
더보기
# 베스트 풀이 방법
import math
m = int(input('총건수: '))
n = int(input('한페이지에 보여줄 게시물수: '))
print(math.ceil(m/n))
+ 라이브러리를 이용하지 않는 베스트 풀이 방법
def board(m,n):
page = m // n
if m % n != 0:
page += 1
print(page)
#1
def()함수를 이용하여 게시판을 페이징해주는 함수(paging)을 생성한다.
#2
생성할 paging()함수에서는 세 가지 경우를 판단한다.
- 입력받은 값(m,n) 중에서 m(게시물의 총 갯수)가 0일 경우.
이때는 결과로 0을 반환한다. - 입력받은 값에서 m을 n(한 페이지에 보여줄 게시물의 수)으로 나누었을 때, 나누어 떨어지는 경우(나머지가 0인 경우).
이때는 m을 n으로 나눈 몫이 페이지 수가 된다. - 입력받은 값에서 m을 n으로 나누었을 때, 나누어 떨어지지 않는 경우(나머지가 0이 아닌 경우).
이때는 남은 나머지의 수만큼 다음 페이지에 게시물이 보여지므로, 페이지 수는 m을 n으로 나눈 몫에 +1을 해준다.
#3
n이 '1보다 크거나 같은 수'라는 점을 생각해서
while반복문을 이용하여 n이 1보다 작은 경우 다시 입력을 받게 한다.
#4
map()함수를 이용하여 한 줄에 m과 n을 한 번에 입력받는다.
이때 입력은 split()함수를 이용하였으나, 기준을 별도로 설정하지 않았기 때문에 띄어쓰기를 기준으로 입력받는다.
#5
올바른 값이 입력된 경우(n이 1보다 크거나 같은 경우), 생성했던 paging()함수에 입력받은 값 m과 n을 넣어 결과를 출력한다.
https://codingdojang.com/scode/406#answer-filter-area
코딩도장
프로그래밍 문제풀이를 통해서 코딩 실력을 수련
codingdojang.com