[프로젝트 오일러 Project Euler]/[Python]
-
[프로젝트 오일러] 4번 대칭수 (python)[프로젝트 오일러 Project Euler]/[Python] 2024. 1. 23. 20:29
문제 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다. 두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다. 세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까? 아이디어 1. 세 자리와 세 자리를 곱하는 반복문을 하나 만든다. 2. 반복문 내에서 각 요소들의 곱을 저장한다. 3. 저장한 값이 앞 뒤로 읽을 때 같은 수를 리스트에 추가한다. 4. 리스트의 최대값 출력 코드 max_value = [] for i in range(100,1000): for j in range(100,1000): result = i * j if(str(result) == str(result)[::-1]): max_val..
-
[프로젝트 오일러] Python 3번 문제[프로젝트 오일러 Project Euler]/[Python] 2024. 1. 12. 17:00
[문제] 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다. 예를 들면 13195의 소인수는 5, 7, 13, 29 입니다. 600851475143의 소인수 중에서 가장 큰 수를 구하세요. [알고리즘] 1. 소인수 정의 : 1과 자기 자신으로만 나누어지는 수 2. 2부터 시작해서 n을 나누어 준다. 3. 2로 나누어지면 다시 2로 나누어주고 나누어지지 않으면 1을 더한 수로 반복 4. 마지막으로 나누어진 수가 소인수 중 가장 큰 값. * 3번 과정을 이해하는 게 중요하다. 처음에 num = num/factor를 해주는 이유를 생각하지 못했음. 종이에 수를 써놓고 인수분해 하는 과정을 생각하면 쉽게 이해할 수 있다. [코드] def prime_factor(..
-
[프로젝트 오일러] Python 2번 문제[프로젝트 오일러 Project Euler]/[Python] 2024. 1. 12. 16:17
[문제] 피보나치(Fibonacci) 수열의 각 항은 바로 앞의 항 두 개를 더한 것입니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 4백만 이하의 짝수 값을 갖는 모든 피보나치 항을 더하면 얼마가 됩니까? [알고리즘] 1. 수열의 첫번째 항과 두번째 항을 인자로 받는 Fibo함수 생성 2. 세번째 매개변수는 n 이하의 값 3. Fibo의 네번째 매개변수는 리스트 4. 리스트에 append로 a[i+2] = a[i] + a[i+1] 추가 5. 짝수 값을 갖는 항만 sum 변수에 더해줌 [코드] empty_list = [] # 빈 리스트 생성 def Fibo(first_num,second_num,max_num,lst): ls..
-
[프로젝트 오일러] Python 1번 문제[프로젝트 오일러 Project Euler]/[Python] 2024. 1. 12. 15:52
Q. 10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다. 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요? [알고리즘] 1. for문을 이용하여 1부터 999까지 수 탐색 2. or 연산으로 3과 5의배수를 찾는다. 3. 해당하는 수를 sum 변수에 더한다. [코드] sum = 0 for i in range(1000): if i%3 == 0 or i%5 == 0: sum += i print(sum) [출력] 233168