본문 바로가기
Programming/Python

[Python] 파이썬 문제 : 3과 5의 배수 합하기

by EunjiBest 2022. 3. 14.

 

포스팅을 하면서 파이썬의 헷갈리는 개념들을 다시한번 정리했다.

백준으로 넘어가기전에 책 뒤에있는 문제들을 풀어보려고한다.

 

 

 

 

3과 5의 배수 합하기
(책 273P)

 

문제 : 

 

10 미만의 자연수에서 3과 5의 배수를 구하면 3,5,6,9이다. 이들의 총합은 23이다.
1000 미만의 자연수에서 3의 배수와 5의 배수의 총합을 구하라.

 

항상 프로그래밍을 할 때에는

쉬운 것이든 어려운 것이든

인풋값이 무엇이고, 아웃풋 값이 무언인지 생각하는 것이다.

 

인풋  :  1000미만의 자연수(1부터 999까지)

아웃풋  : 3의 배수와 5의 배수의 총합.

 

그리고

1. 3의 배수와 5의 배수는 어떻게 찾을 것인가?

2. 3의 배수와 5의 배수가 겹칠 때에는 어떻게 할 것인가?

 

등등 

경우의 수를 생각해서 적어둔다.

 

 

자, 

그럼 먼저,

1000미만의 자연수는 어떻게 구할 수 있을까?

나는 1부터 1000까지 반복문을 돌려야 된다고 생각했다.

 

사실 for문을 생각했지만,

간단한 연산이여서 그런지 책에서는 while문을 사용하라고 적혀있다.

 

그럼 둘 다 만들어보자.

 

#while문 사용
n = 1
while n < 1000:
  print(n)
  n += 1

 

 

#for문 사용

for n in range(1, 1000):
  print(n)

 

 

1부터 1000까지의 자연수를 구했으니

그 다음은 1부터 1000까지의 수 중에서 3의 배수를 알아내야한다.

 

3의 배수는 3으로 나누었을 때 나누어 떨어지는 나머지 수가 0이다.

라는 것을 초등학생? 중학생? 때 문제 풀면서 많이 접해봤을 것이다.

 

이를 이용해서

위 for문에 if 문을 추가해서 조건을 달아보자.

 

for n in range(1, 1000):
  if n %3 == 0: 
    print(n)

 

아까 만들었던 for문 안에 if문을 넣었다.

n나누기 3의 나머지가 0인 값을 

프린트 해라!는 뜻이다.

 

 

마찬가지로 

5의 배수 또한 n%5가 0이 되는 수로 구할 수 있다.

 

if n % 3 ==0 or n%5 ==0:

 

그럼 가운데 코드에 n%5 == 0을 추가할 수 있겠다.

또한 3의 배수 또는 5의 배수를 구해야 함으로

or 연산자를 사용한다.

 

만약 or을 쓰지않고

 

result = 0

for n in range(1, 1000):
  if n % 3 ==0:
    result += n
  if n%5 ==0:
    result += n
print(result)

 

if문을 또 만들어서 n%5를 붙여준다면,

3의 배수와 5의 배수가 이중으로 더하여 잘못된 

값이 나온다.

 

 

 

이를 토대로 최종 코드를 만들면

 

result = 0

for n in range(1, 1000):
  if n % 3 ==0 or n%5 ==0:
    result += n
print(result)

 

완성이다.

 

좀 더 추가설명을 하자면,

result = 0이라는 기본값을 만들어주고

if문을 돌면서 3의 배수와 5의 배수가 뽑히면

result와 뽑힌 값을 더해주는 함수를 만든 것이다.

 

 

 

 

 

 

 

 

 

 

 

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

 

반응형

댓글