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()함수에서는 세 가지 경우를 판단한다.

 

  1. 입력받은 값(m,n) 중에서 m(게시물의 총 갯수)가 0일 경우.
    이때는 결과로 0을 반환한다.
  2. 입력받은 값에서 m을 n(한 페이지에 보여줄 게시물의 수)으로 나누었을 때, 나누어 떨어지는 경우(나머지가 0인 경우).
    이때는 m을 n으로 나눈 몫이 페이지 수가 된다.
  3. 입력받은 값에서 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