프로젝트 오일러 도전기 #1 (with 파이썬 프로그래밍공부)
문제
Multiples of 3 or 5
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?
1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요?
접근아이디어
3과 5의 배수를 찾으려면 해당 미지수 i를 3이나 5로 나눴을때 나머지가 0이 되면된다.
파이썬에서 나눗셈명령어은 / 이고 나머지 명령어는 %이다.
1 2 3 4 | >>> 17/10 1.7 >>> 17%10 7 | cs |
혹은 divmod(분자,분모) 로 구할수있다.
1 2 | >>> divmod(17,10) (1, 7) | cs |
해당 숫자들의 합을 구하는 방법은 두가지가 떠올랐는데
1. 변수하나를 잡고 계속 더한다
1 2 3 4 5 | >>> a=0 >>> for i in range(1,10): ... a+=i >>> print(a) 45 | cs |
for 문은 범위를 지정후 반복을 시행할때 쓰는문구로
for 변수 in ragne(시작,끝):
혹은
for 변수 in ragne(끝):
또는
for 변수 in range(리스트) :
이런식으로 구성되어있으며 시작범위를 지정해주지 않으면 0부터 시작하여 끝-1까지 진행된다.
2. 집합(리스트)를 만들어서 전체 합을 계산한다
1 2 3 4 5 | >>> a=[] >>> for i in range(1,10) : ... a.append(i) >>> print(a) [1, 2, 3, 4, 5, 6, 7, 8, 9] | cs |
리스트에 변수를 추가 하는 명령어는
리스트.append(추가)
2번이 좀더 멋들여져보이지만
프로젝트 오일러는 단순하게 '답'만 계산하면 되기에 1번으로 진행했다.
3과 5의 배수 판단 여부는
if 문을 활용해서 확인하였다
1 2 | >>>if i%3==0 or i%5==0 : ... a+= i | cs |
그런데
틀렸다...
문제를 다시보니 '미만'을 의미한다
예시에서 10은 5의 배수인데 포함을 안시켰으니 미만이 맞는것이다
범위를 다시 range(1,1000) 으로 수정하니
클리어
댓글
댓글 쓰기