본문 바로가기
  • 게임 개발과 프로그래밍 그리고 인공지능
프로그래밍 언어/파이썬

파이썬 프로그래밍, 어떻게 시작할까? 2 - 3과 5의 배수를 모두 더하기 및 게시판 페이징하기

by huenuri 2024. 10. 4.

저녁식사를 하고 조금 놀다가 8시가 넘어서 공부를 다시 시작해 본다. 파이썬 프로그래밍 오랜만에 해보는데 정말 재미있다.


 
 
 

3과 5의 배수를 모두 더하기

다음 문제를 어떻게 풀면 좋을지 생각해보자.
 

 
이 문제를 풀기 위한 중요 포인트는 2가지다.

  1. 1000 미만의 자연수를 구하는 방법
  2. 3과 5의 배수를 구하는 것

이 두 가지만 해결되면 문제는 쉽게 풀릴 것이다.


 

1. 먼저 1000 미만의 자연수는 어떻게 구할지 생각해 본다. 

 
변수에 초기값을 준 후 루프를 돌리며 1씩 증가시켜서 999까지 진행하는 방법이 가장 일반적이다.

 
또는 range 함수를 사용할 수도 있다.


 
 
 

2. 1000까지의 자연수를 차례로 구하는 방법은 알았으므로 3과 5의 배수를 구하는 방법을 생각해 보자.

 
이 방식으로 5의 배수도 추가할 수 있을 것 같다.


 
 
 

3. 이러한 내용을 바탕으로 만든 최종 풀이는 다음과 같다.
 




하지만 이 문제에는 1가지 함정이 있다. 3으로도 5로도 나누어지는 15와 같은 수가 중복으로 더해질 수 있다는 점이다. 따라서 중복이 더해지지 않도록 or 연산자를 사용해야 한다.


 
 
 
 

게시판 페이징하기

 
게시물의 총 개수와 한 페이지에 보여 줄 게시물 수를 입력으로 주었을 때 총 페이지 수를 출력하는 프로그램이 필요하다고 한다.

프로그램을 만들기 위해 입력값과 결과값이 어떻게 나와야 하는지 먼저 살펴보자. 게시물의 총 개수가 5이고 한 페이지에서 보여 줄 게시물 수가 10이면 총 페이지 수는 1이 된다. 

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

 
1. 총 게시물 개수(m)를 한 페이지에 보여 줄 게시물 수(n)로 나누고 1을 더하면 총 페이지 수를 얻을 수 있다.

총 페이지 수 = (총 게시물 개수 / 한 페이지당 보여 줄 개수) + 1

 

 
2. 이러한 공식을 적용했을 경우 총 페이지 수가 표의 값처럼 구해지는지 확인해 본다.
 

 
첫 번째에서 세 번째 케이스는 공식에 맞게 결과가 출력된다. 하지만 네 번째 케이스는 게시물 3이 되어야 하는데 4가 되었다.


 
 
 

3. 실패 케이스는 총 게시물 수와 한 페이지에 보여 줄 게시물 수를 나눈 나머지 값이 0이 될 때 발생한다는 것을 유추할 수 있다. 이 실패 케이스를 해결하려면 다음과 같이 코드를 변경해야 한다.
 

 
나누었을 때 나머지가 0인 경우는 나누기의 몫만 리턴하고 이외의 경우에는 1을 더하여 리턴하도록 변경했다. 프로그램을 실행해보면 모든 케이스가 원하던 결과를 출력하는 것을 확인할 수 있다.
 


 
 
 

학습을 마치고

어제 저녁에 이 내용을 학습하다가 마무리하지 못하고 다음날 새벽에 이어서 작성해 보았다. 이제 에디터를 사용하는 것도 많이 익숙해졌다. 
다음 포스트에서 파이썬 프로그래밍을 이어서 학습해 볼 것이다.