반응형 알고리즘 문제 & 프로그래밍40 [프로젝트 오일러] 4번 문제 & 풀이 (세자리 수를 곱해 만들 수 있는 가장 큰 대칭수) Problem 4 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다. 두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다. 세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까? 처음 아이디어 세 자리 수끼리의 곱의 범위는 (10000, 999999)로 5자리 또는 6자리이다. 대칭수 중 가장 큰 숫자를 묻고 있으므로, 6자리일 확률이 높다.(물론 아닐 수도 있다.) 따라서 큰 수부터 먼저 곱하고 작은 수는 나중에 곱한다. 그 다음, 숫자를 문자열로 변환하여 앞 3자리 숫자를 거꾸로 했을 때, 뒤 3자리 숫자와 같도록 조건문을 작성한다. 6자리 수에서 대칭수가 없을 경우를 대비하여 5자리의 경우의 조.. 2020. 5. 18. [프로젝트 오일러] 3번 문제 & 풀이 (가장 큰 소인수 구하기) Problem 3 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다. 예를 들면 13195의 소인수는 5, 7, 13, 29 입니다. 600851475143의 소인수 중에서 가장 큰 수를 구하세요. 내 아이디어 2부터 차례로 나누기 시작 나누어진 숫자가 나오면, 그 숫자로 한번 더 나눌 수 있도록 조건문의 처음으로 돌아가도록 설정 -> while & if 함수 사용 이와 같은 방식으로 나누는 숫자를 1씩 증가시키며 나눈다. 나누는 숫자가 나누는 숫자보다 더이상 작지 않으면 조건문 종료 (즉, 자기 자신을 나눌 때 종료) 마지막 나누는 숫자가 정답 num = 600851475143 a = 2 while a < num: if num % a == 0: num .. 2020. 5. 18. 오일러 프로젝트 2번 문제피보나치 수열에서, 짝수이면서 4백만 이하인 값을 모두 더하시오. 접근법1. 피보나치 수열 점화식 만들기(n번째 항의 값) 2. n번째 값이 4백만 이하인 값 중에서 짝수인 것을 모두 더한다. In [1]: #2. 피보나치 수열에서, 짝수이면서 4백만 이하인 값을 모두 더하시오. #피보나치수열 : 1,2,3,5,8,13..... #접근방법 #1. 피보나치 수열 점화식 만들기(n번째 항의 값) #2. n번째 값이 4백만 이하인 값 중에서 짝수인 것을 모두 더한다. def fib(n): if n==1 or n==2: return n else: return fib(n-1)+fib(n-2) fib(5) Out[1]: 8 In [2]: n=1 sum=0 while fib(n) 2018. 12. 8. 오일러 프로젝트 1번 문제1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하시오. 접근포인트1. 3의 배수는 3으로 나누면 0이 됨(5의 배수 또한 5로 나누면 0이 됨)2. 3 또는 5의 배수로 나누면 0이 되는 수들을 모두 더한다 In [1]: #1. 1000보다 작은 자연수 중에서 3 또는 5의 배수를 더하시오 #접근방법 #1. 3의 배수는 3으로 나누면 0이 됨(5의 배수 또한 5로 나누면 0이 됨) #2. 3 또는 5의 배수로 나누면 0이 되는 수들을 모두 더한다 result=0 for n in range(1,1000): if n%3==0 or n%5==0: result+=n result Out[1]: 233168 Euler1 2018. 12. 8. 이전 1 ··· 4 5 6 7 다음 반응형